我試圖用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?
我也嘗試了正斜槓,但其相同
你實際上並不*鏈接*任何Boost庫,你只告訴鏈接器在哪裏*查找*庫。 '-L'選項增加了一個搜索路徑,'-l'(小寫L)添加一個庫來鏈接(它應該在'-L'選項提供的路徑中找到)。 –
您應該將所有Boost庫安裝到一個公共路徑中,如果該路徑不在連接器默認列表中,則可以更容易地添加一個'-L'選項(在這種情況下,您不必添加一個'-L'選項)。 –
最後有點挑剔注意:您在所顯示的命令行*中使用的斜槓是正斜槓。反斜槓是\。 –