如何在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中所做的。)
答案 0 :(得分:8)
来自Automake手册(主要是§8.1.2,还有§8.4):
PROG_LDADD
不合适 传递特定于程序的链接器标志 (-l
,-L
,-dlopen
和-dlpreopen
除外PROG_LDFLAGS
)。所以,使用-l
变量 目的
这意味着您可以(但实际上应该)在-L
中使用LDADD
和LDFLAGS
,而不是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链接到该库。