簡體   English   中英

如何在automake中設置庫的順序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM