Cra*_*enz 7 c automake autoconf gcc autotools
如何在automake中设置库的顺序?
在我的文件中,我有类似的东西:
myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la
myprog_LDFLAGS = -static -L/home/user/lib -ladhoc
Run Code Online (Sandbox Code Playgroud)
现在,当我编译时,我也得到了类似的编译行:
gcc -static myprog-myprog.o -o myprog -L/home/user/lib -ladhoc ./.libs/libmine.a
Run Code Online (Sandbox Code Playgroud)
问题是libmine.a依赖于libadhoc.a,因此编译行应该是:
gcc -static myprog-myprog.o -o myprog ./.libs/libmine.a -L/home/user/lib -ladhoc
Run Code Online (Sandbox Code Playgroud)
如何在automake中设置库的顺序?(或者可能是一个解决方法;如何重复编译行中的所有库.这就是我在自定义Makefile中所做的.)
来自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
Run Code Online (Sandbox Code Playgroud)