2014-12-28 154 views
1

我試圖用MINGW編譯這段代碼並提高MINGW BOOST鏈接失敗

http://ttic.uchicago.edu/~cotter/projects/SBP/

首先,我在Linux/Ubuntu和沒有問題彙編本。然後我使用MINGW64在W764下嘗試。創建對象的級別都一切正常,但鏈接失敗。下面是使用-l選項在GCC命令

g++ issvm_evaluate.o svm_kernel_base.o svm_kernel_private_cache.o 
svm_optimizer_base.o svm_optimizer_classification_biased_perceptron.o 
svm_optimizer_classification_biased_sbp.o 
svm_optimizer_classification_biased_smo.o  
svm_optimizer_classification_biased_sparsifier.o 
svm_optimizer_classification_private_find_water_level.o 
svm_optimizer_classification_unbiased_perceptron.o  
svm_optimizer_classification_unbiased_sbp.o 
svm_optimizer_classification_unbiased_smo.o 
svm_optimizer_classification_unbiased_sparsifier.o -o issvm_evaluate -fopenmp 
-LC:/boost_1_57_0/boost_1_57_0/bin.v2/libs/serialization/build/gcc-mingw- 
4.9.0/release/ -lstdc++ -lm -LC:/boost_1_57_0/boost_1_570/bin.v2/libs/iostreams 
/build\gcc-mingw-4.9.0/release/ -LC:/boost_1_57_0/boost_1_570/bin.v2 
/libs/program_options/build/gcc-mingw-4.9.0/release/ 

和響應

issvm_evaluate.o:issvm_evaluate.cpp:(.text+0x2a81): undefined reference to boos 
t::archive::detail::archive_serializer_map<boost::archive::binary_iarchive>::era 
se(boost::archive::detail::basic_serializer const*)' 
issvm_evaluate.o:issvm_evaluate.cpp:(.text+0x2ac1): undefined reference to `boos 
t::archive::detail::archive_serializer_map<boost::archive::binary_iarchive>::era 
se(boost::archive::detail::basic_serializer const*)' 

Make文件從Linux,但我無法找到建庫或 文件$ {patsubst%, - LBOOST _%,$ (BOOST_LIBRARIES)},所以我懷疑頭文件剛夠,但在W7下我使用L選項,並給目錄來建立boost庫。任何想法是什麼問題可以?

由於W7中的BOOST構建目錄包含很多庫文件,包括dll也許l編譯器選項應該使用並鏈接到DLL?

我也嘗試了正斜槓,但其相同

+0

你實際上並不*鏈接*任何Boost庫,你只告訴鏈接器在哪裏*查找*庫。 '-L'選項增加了一個搜索路徑,'-l'(小寫L)添加一個庫來鏈接(它應該在'-L'選項提供的路徑中找到)。 –

+0

您應該將所有Boost庫安裝到一個公共路徑中,如果該路徑不在連接器默認列表中,則可以更容易地添加一個'-L'選項(在這種情況下,您不必添加一個'-L'選項)。 –

+0

最後有點挑剔注意:您在所顯示的命令行*中使用的斜槓是正斜槓。反斜槓是\。 –

回答

1

似乎我解決了我的問題。問題在於多個使用-L選項的不同路徑不能提供多個搜索路徑,只有1st -L正在工作。此外, 庫必須通過-l選項明確指定,只設置-L指向具有庫的子目錄正確的目錄是不夠的。 LIBRARY_PATH環境變量的庫路徑的全局設置正在工作,因此我將-L替換爲-L,並將所有請求的庫複製到一個目錄,並由-l請求的庫指定。