[英]How do you set the order of libraries in 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中所做的。)
來自Automake手冊(主要是§8.1.2,但也是§8.4 ):
PROG_LDADD
不適合傳遞特定於程序的鏈接器標志(-l
,-L
,-dlopen
和-dlpreopen
)。 因此,為此目的使用PROG_LDFLAGS
變量。
這意味着你可以(但實際上你應該)在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
來自automake書籍的一個想法( http://sources.redhat.com/autobook/autobook/autobook_92.html ):用libmine和libadhoc創建一個便利庫,並將myprog鏈接到該庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.