2013-12-21 60 views
2

我有一個項目與自動工具建立一個C++庫,包括與Boost.Python的Python綁定。 我的Boost.Python我的系統上的二進制文件,我想在本鏈接:使用libtool鏈接到非libtool庫

/usr/lib/libboost_python-py27.so.1.49.0 

沒有相應的.la文件,所以我想我可以在完整路徑庫添加到libtool的有類似於此命令:

bash ./libtool --mode=link g++ -rpath /usr/local/lib src/o1.lo src/o2.lo ... \ 
    /usr/lib/libboost_python-py27.so.1.49.0 -o libNSM.la 

但是的libtool被丟棄從已發行克++ COM的/usr/lib/libboost_python-py27.so.1.49.0普通話。如果我手工運行g ++,它工作正常。

我該如何製作libtool使用本地共享庫或什麼是處理這種情況的正確方法。我絕對希望用戶能夠使用他們現有的增強二進制文件。

回答

0

我的Boost.Python我的系統上的二進制文件,我想對

你安裝boost-devel的符號鏈接安裝到/usr/lib/libboost_python-py27.so.1.49.0鏈接?

沒有對應的.la文件

它不是必需的libtool鏈接。如果安裝boost-devel包,-lboost_python-py27可能就足夠了。

我該如何讓libtool使用本地共享庫或什麼是處理這種情況的正確方法。我絕對希望用戶能夠使用他們現有的增強二進制文件。

你可能想看看從GNU Autoconf ArchiveAX_BOOST_PYTHON宏來幫助用戶設置所需的庫libboost_python(您可能需要的不僅僅是這些特定的宏更從那裏)。 boost.m4宏也似乎支持python,並應提供類似的東西。

+1

我正在使用AX_BOOST_PYTHON,它給了我boost路徑(在我的情況下只是/ usr/lib)的路徑。但這不是一個助推問題,這是一個普遍問題。假設我在我的項目中使用了非流行的庫,並且我的軟件的用戶只有一個共享庫(不是libtool,而是.so文件)。如果libtool不接受非libtool庫,他們如何構建項目?什麼是正確的方法來做到這一點? – bennihepp

+0

似乎沒有辦法使用libtool將庫與非標準文件名鏈接起來。該庫需要以.so或.la結尾的文件。 – bennihepp

+0

Boost開發包(例如'boost-dev'或'libboost-python1.49-dev')應該爲共享庫提供一個符號鏈接(帶有'.so'擴展名)。 – ldav1s