makefile 语法_makefile define用法_nis makefile 语法(8)

电脑杂谈  发布时间:2017-04-11 03:08:44  来源:网络整理

lxdialog-objs := checklist.o lxdialog.o

带有.o后缀名的对象是从相应.c源文件编译而来。在上面的例子中,checklist.c用来编译生成checklist.o,lxdialog.c用来编译生成lxdialog.o。

最后,这两个.o文件链接生成最终的可执行文件lxdialog。

注意:<executable>-y的语法在主机程序中是不允许的。

--- 4.3 定义共享库

具有.so后缀名的对象被认为是共享库,共享库会被编译成为与位置无关的对象。

Kbuild提供了对共享库的支持,但是对共享库的使用应该严限制。

在下面的例子中,共享库libkconfig.so用来连接可执行文件conf。

例子:

#scripts/kconfig/Makefile

hostprogs-y := conf

conf-objs := conf.o libkconfig.so

libkconfig-objs := expr.o type.o

在makefile文件中,共享库需要相应的-obs行,在上面的例子中,共享库libkconfig有expr.o和type.o两个对象组成。

Expr.o和type.o将会编译为与位置无关的代码,并且连接成为共享库libkconfig.so。c不支持共享库。

--- 4.4 使用C的主机程序

Kbuild提供对使用C编写而成的主机程序的支持。接受它完全是为了支持kconfig,一般不建议使用。

例子:

#scripts/kconfig/Makefile

hostprogs-y := qconf

qconf-cxxobjs := qconf.o

在上面的例子中可执行文件由名叫qconf.cc的C文件组成– 使用$(qconf-cxxobjs)变量来识别。

如果qconf由.c和.cc和混合文件组成,那么需要一些额外的行来标记该行为。

例子:

#scripts/kconfig/Makefile

hostprogs-y := qconf

qconf-cxxobjs := qconf.o

qconf-objs := check.o

--- 4.5控制主机程序的编译选项

当编译一个主机程序的使用,有可能会对其设置具体的标记。编译主机程序的过程中可以使用$(HOSTCC)变量来传递$(HOSTCFLAGS)变量中指定的选项。

可以使用HOST_EXTRACFLAGS变量来设置对所有当前Makefile中创建的主机都有效的标记。

例子:

#scripts/lxdialog/Makefile

HOST_EXTRACFLAGS =-I/usr/include/ncurses

可以使用下面的命令来对单个文件设定具体的标记:

例子:

#arch/ppc64/boot/Makefile

HOSTCFLAGS_piggyback.o:= -DKERNELBASE=$(KERNELBASE)

当然可以对编译器指定附加的选项。

例子:

#scripts/kconfig/Makefile

HOSTLOADLIBES_qconf:= -L$(QTDIR)/lib

当连接qconf的时候,将会传递额外的选项"-L$(QTDIR)/lib"给编译器。

--- 4.6主机程序的最终建立

Kbuild只有当主机程序被引用为一个先决条件时才会最终建立它们。

这可以通过两种方法实现:

(1)将先决条件明确地在特殊规则中列出


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40628-8.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 丁居晦
      丁居晦

      这样的言论就应当受到处理

    • 刘夷道
      刘夷道

      那中国的现代级和旅沪级旅海级岂不更老

      • 李存勖
        李存勖

        全国军民应团结一致

    热点图片
    拼命载入中...