2012-09-21 76 views
3

我正在調試庫鏈接問題,並且遇到了我沒有想到的事情。這是問題。我使用構建工具來生成我的Makefile,所以我只需要編寫Makefile.am。最終目標是建立一個共享庫(srv.so)。有一些庫需要靜態鏈接,所以我想使用LD的「靜態」標誌。我Makefile.am有這樣Makefile.am中的靜態和靜態LD_FLAGS之間的區別

srv_la_LDFLAGS= -module -avoid-version 

LD_FLAGS現在,當我添加 「靜態」 的標誌事實證明我們有它的2個獨立的解釋

srv_la_LDFLAGS= -module -avoid-version -static /path/to/lib.a 

第二

srv_elastica_la_LDFLAGS= -module -avoid-version --static /path/to/lib.a 

請注意--static-static之間的差異。

第一一個產生其運行AR接頭線,並試圖產生srv.a代替srv.so

/bin/bash ../../libtool --tag=CC --mode=link gcc -I../../include/ 
-Wno-unused-label  -DMONGO_HAVE_STDINT -g -O2 -Wall -D_REENTRANT -g -O2 -Wall 
-DCI_BUILD_MODULE -I/usr/local /c_icap/include/c_icap -module -avoid-version -z defs 
-static /usr/local/lib/libmongoc.a -o srv.la -rpath /usr/local/lib/c_icap_modules 
srv_la-srv.lo -lrt -lcre2 -lre2 -lcurl -lpthread -lbson 

*** Warning: Linking the shared library srv_elastica.la against the 
*** static library /usr/local/lib/libmongoc.a is not portable! 
libtool: link: ar cru .libs/srv.a /usr/loc/lib/libmongoc.a      
.libs/srv_la-srv.o 

鑑於第二一個產生正確的連接線(-shared)輸出srv.so

/bin/bash ../../libtool --tag=CC --mode=link gcc -I../../include/ -Wno-unused-label 
-DMONGO_HAVE_STDINT -g -O2 -Wall -D_REENTRANT -g -O2 -Wall -DCI_BUILD_MODULE -I/usr 
/local/c_icap/include/c_icap -module -avoid-version -z defs --static /usr/local 
/lib/libmongoc.a -o srv.la -rpath /usr/local/lib/c_icap_modules srv_la-srv.lo 
-lrt -lcre2 -lre2 -lcurl -lpthread -lbson 

*** Warning: Linking the shared library srv_elastica.la against the 
*** static library /usr/local/lib/libmongoc.a is not portable! 
libtool: link: gcc -shared -fPIC -DPIC .libs/srv_la-srv.o 
/usr/local/lib/libmongoc.a -lrt -lcre2 -lre2 /usr/lib/x86_64-linux-gnu/libcurl.so 
-lpthread -lbson -O2 -O2 -Wl,-soname -Wl,srv.so -o .libs/srv.so 

這是一種奇怪的東西。在這種類型的ld的手冊頁上沒有提及。任何幫助?

回答

1

測試庫請求從您的構建測試library.it靜態庫應該在Makefile.am定義遵循

srv_elastica_la_LDFLAGS= -module -avoid-version --static -L/path/to/lib_test_name -llib_test_name 

如果您在name_LDFLAGS聲明-static標誌。我們定義-static以鏈接項目上的動態庫。

相關問題