2013-01-24 133 views
1

如何鏈接靜態庫(.a)和libtool?將靜態庫鏈接到libtool

我創建它使用三個RSA庫libcertc.alibcertcsp.alibbsafe.a 我鏈接這些庫-lcertc -lcertcsp -lbafe但同時加載我收到「符號未定義」錯誤模塊Apache模塊(mod_shib_22.so):

./apachectl -k stop httpd: Syntax error on line 426 of /usr/local/apache2/conf/httpd.conf: 
Cannot load /usr/local/lib64/shibboleth/mod_shib_22.so into server: /usr/local/lib64/shibboleth/mod_shib_22.so: undefined symbol: T_GetDynamicList 

我正在使用生成文件這些行:

LDFLAGS = -L../../libraries/Crypto-C-6.4.0.3/lib/linux_lsb30_x86_64 -L../../libraries/Cert-C-2.9.0.0/lib/LinuxLSB30_x86_64/release_mt 
LIBOBJS = 
LIBS = -lxerces-c -L/usr/local/lib64 -llog4shib -lnsl -lcertc -lcertcsp -lbsafe -ldl 
+0

由於共享,其他庫正在鏈接。 –

+2

http://stackoverflow.com/questions/10290771/creating-static-libraries – Satish

回答

1

鏈接一個DSO(Apache模塊在這種情況下)的靜態庫不能保證工作,並且根據靜態庫中的對象是如何構建的,可能無法工作。通常靜態庫中的對象不是使用position independent code啓用的,但DSO 需要位置無關的代碼

+0

我有其他的Apache模塊正在使用相同的靜態庫正確鏈接,但它不使用libtool。 libtool有什麼區別? –

+0

您需要在鏈接'mod_shib_22.so'時發佈libtool的輸出。 – ldav1s

+0

./apachectl -k stop httpd:/usr/local/apache2/conf/httpd.conf第426行的語法錯誤:無法將/usr/local/lib64/shibboleth/mod_shib_22.so加載到服務器:/ usr/local /lib64/shibboleth/mod_shib_22.so:undefined symbol:T_GetDynamicList 我在Makefile中使用這些行 LDFLAGS = -L ../../ libraries/Crypto-C-6.4.0.3/lib/linux_lsb30_x86_64 -L ../ ../libraries/Cert-C-2.9.0.0/lib/LinuxLSB30_x86_64/release_mt LIBOBJS = LIBS = -lxerces -c -L/usr/local/lib64 -llog4shib -lnsl -lcertc -lcertcsp -lbsafe -ldl –