如何在automake中设置库的顺序?

时间:2009-10-30 13:40:44

标签: c gcc autotools autoconf automake

如何在automake中设置库的顺序?

在我的文件中,我有类似的内容:

myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la
myprog_LDFLAGS = -static -L/home/user/lib -ladhoc

现在,当我编译时,我也得到了类似的编译行:

gcc -static myprog-myprog.o -o myprog -L/home/user/lib -ladhoc ./.libs/libmine.a

问题是libmine.a依赖于libadhoc.a,因此编译行应该是:

gcc -static myprog-myprog.o -o myprog ./.libs/libmine.a -L/home/user/lib -ladhoc

如何设置automake中库的顺序? (或者可能是一个解决方法;如何重复编译行中的所有库。这就是我在自定义Makefile中所做的。)

2 个答案:

答案 0 :(得分:8)

来自Automake手册(主要是§8.1.2,还有§8.4):

  

PROG_LDADD不合适   传递特定于程序的链接器标志   (-l-L-dlopen-dlpreopen除外   PROG_LDFLAGS)。所以,使用   -l变量   目的

这意味着您可以(但实际上应该)在-L中使用LDADDLDFLAGS,而不是Makefile.am。换句话说,您的myprog_DEPENDENCIES = adhoc-target myprog_SOURCES = myprog.c myprog_LDADD = libmine.la -L/home/user/lib -ladhoc myprog_LDFLAGS = -static 应该只是阅读

{{1}}

答案 1 :(得分:2)

来自automake book(http://sources.redhat.com/autobook/autobook/autobook_92.html)的一个想法:用libmine和libadhoc创建一个便利库,并将myprog链接到该库。