在automake中如何设置库的顺序?
在我的 am 文件中,我有类似的东西:
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 中所做的。)
最佳答案
来自 Automake 手册(主要是 §8.1.2 但也有 §8.4 ):
PROG_LDADD
is inappropriate for passing program-specific linker flags (except for-l
,-L
,-dlopen
and-dlpreopen
). So, use thePROG_LDFLAGS
variable for this purpose.
这意味着您可以(但实际上您应该)在 LDADD
中使用 -l
和 -L
,而不是在 LDFLAGS
。换句话说,您的 Makefile.am
应该只是阅读
myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la -L/home/user/lib -ladhoc
myprog_LDFLAGS = -static
关于c - 你如何在automake中设置库的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1649864/