2016-11-25 49 views
0

我試圖建立QuantLib 1.9我的機器(Xubuntu上16.04)上,和我通過升壓「sudo易於得到......」錯誤建築Quantlib涉及升壓(Ubuntu的)

QuantLib編譯罰款,直至事件的順序如下:

make[1]: Entering directory '/home/Downloads/packages/QuantLib-1.9/test-suite' 

有到libtool的兩個電話,第一個看起來像這樣:

/bin/bash ../libtool --tag=CXX --mode=link g++ -g -O2 -o quantlib-test-suite 

了近100 * .o文件其次,通過這串終止:

libUnitMain.la ../ql/libQuantLib.la -lboost_unit_test_framework 

有第二個電話後一個的libtool:

libtool: link: g++ -g -O2 -o .libs/quantlib-test-suite 

也跟着100個* .o文件,並通過此字符串終止:

./.libs/libUnitMain.a ../ql/.libs/libQuantLib.so -lboost_unit_test_framework 

這裏是哪裏錯誤收起,然後構建失敗:

quantlibtestsuite.o: In function `make_test_case': 
/usr/include/boost/test/unit_test_suite_impl.hpp:255: undefined reference to boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)' 
/usr/include/boost/test/unit_test_suite_impl.hpp:255: undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)' 
americanoption.o: In function `make_test_case': 
/usr/include/boost/test/unit_test_suite_impl.hpp:255: undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)' 
/usr/include/boost/test/unit_test_suite_impl.hpp:255: undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)' 
americanoption.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)': 
/usr/include/boost/test/unit_test_suite_impl.hpp:255: undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)' 
amortizingbond.o:/usr/include/boost/test/unit_test_suite_impl.hpp:255: more undefined references to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)' follow 
collect2: error: ld returned 1 exit status 
Makefile:1075: recipe for target 'quantlib-test-suite' failed 
make[1]: *** [quantlib-test-suite] Error 1 
make[1]: Leaving directory '/home/Downloads/packages/QuantLib-1.9/test-suite' 
Makefile:601: recipe for target 'all-recursive' failed 
make: *** [all-recursive] Error 1 
+0

安裝了Boost的版本是什麼,你準確的調用了什麼?./configure? –

+0

我通過以下命令行參數進行配置: sudo ./configure --with-boost-include =/home/EmilioW/Downloads/boost_1_62_0 --with-boost-lib =/home/EmilioW/Downloads/boost_1_62_0/libs config.log文件很大,我不能在這裏發佈它。一旦腳本嘗試編譯測試套件,我只會看到錯誤。 – EmilioW

回答

0

您可能正在使用Boost版本進行編譯,並且您正在嘗試與另一個版本鏈接(您說的是通過apt-get獲得了Boost,該版本安裝到/usr中,但是隨後您將傳遞給./configure在您家中的一條路徑目錄)。這可以解釋爲什麼鏈接器正在尋找boost::unit_test::ut_detail中不在庫中的方法。

如果您要使用apt-get附帶的Boost版本,請將呼叫中的升壓路徑從./configure中刪除,以使其正常工作。如果你想使用你在本地安裝的那個,你應該首先檢查你是否有編譯好的庫在/home/EmilioW/Downloads/boost_1_62_0/libs。如果他們確實存在,並且您不需要增強其他功能,則可以使用apt-get來卸載打包版本。如果您需要同時安裝,則必須檢查編譯器和鏈接器列出-I-L路徑的順序,並確保您想要的路徑先到達...

+0

嗨Luigi,我不得不從其他Boost版本中清除我的系統。即在這種情況下你是對的。我想從源頭上獲得所有東西,但是我在更早的時候發現了易失性的Boost錯誤。刪除沒有正確清理系統。 – EmilioW