MINGW BOOST链接失败

时间:2014-12-28 14:20:47

标签: c++ linux gcc boost mingw

我尝试使用MINGW和BOOST编译此代码

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

首先我在Linux / UBUNTu下编译了这个并没有问题。然后我使用MINGW64在W764下尝试过。最高级别的创建对象都可以,但链接失败。这是一个命令

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*)'

使用gcc中的l选项从LINUX创建文件,但我找不到构建库或 在LINUX下文件$ {patsubst%, - lboost _%,$(BOOST_LIBRARIES)}所以我怀疑标题已经足够但在W7下我使用L选项并给目录构建boost库。知道问题是什么吗?

由于W7中BOOST的构建目录包含很多库文件,包括dll,可能应该使用l选项编译器并链接到dll?

我也尝试使用正斜杠但是它的相同

1 个答案:

答案 0 :(得分:1)

似乎我解决了我的问题。问题是多次使用-L选项,不同的路径不提供多个搜索路径,只有1st -L正在工作。另外 库必须由-l选项显式指定,只设置-L指向带有库的子目录的正确目录是不够的。 LIBRARY_PATH环境变量的库路径的全局设置正在工作,因此我将-L替换为此并将所有请求的库复制到一个目录并由-l请求的库指定。