问题:我的文件在本地虚拟机(LVM)上编译,而不是在Institute服务器(IS)上编译。
在LVM上:
PATH=/home/X/my_lib/boost_1_64_0:$PATH
LD_LIBRARY_PATH=/home/X/my_lib/boost_1_64_0/stage/lib:$LD_LIBRARY_PATH
export PATH
export LD_LIBRARY_PATH打开的是:
PATH=/user/X/my_lib/boost_1_64_0:$PATH
LD_LIBRARY_PATH=/user/X/my_lib/boost_1_64_0/stage/lib:$LD_LIBRARY_PATH
export PATH
export LD_LIBRARY_PATH使用以下命令在LVM上编译文件:
g++ -std=c++11 -O3 benchmark_ad_tree.cpp blank_scoring_function.cpp fnml_scoring_function.cpp log_likelihood_calculator.cpp bdeu_scoring_function.cpp bayesian_network.cpp score_calculator.cpp ad_tree.cpp -o check -L /home/X/my_lib/boost_1_64_0/stage/lib/*.so但是,当使用相同的命令编译相同的代码时,它会抛出以下一堆异常:
g++ -std=c++11 -O3 benchmark_ad_tree.cpp blank_scoring_function.cpp fnml_scoring_function.cpp log_likelihood_calculator.cpp bdeu_scoring_function.cpp bayesian_network.cpp score_calculator.cpp ad_tree.cpp -o check /user/X/my_lib/boost_1_64_0/stage/lib/*.so更新:遵循@John Zwinck的建议(在答案部分)。
我已经将编译命令更新为
引发的异常:
g++ -std=c++11 -O3 benchmark_ad_tree.cpp blank_scoring_function.cpp fnml_scoring_function.cpp log_likelihood_calculator.cpp bdeu_scoring_function.cpp bayesian_network.cpp score_calculator.cpp ad_tree.cpp -o check -L /user/X/my_lib/boost_1_64_0/stage/lib -lboost_numpy -lboost_python -lboost_thread引发异常:
/usr/bin/ld: /tmp/ccWojrSj.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/user/X/my_lib/boost_1_64_0/stage/lib/libboost_system.so.1.64.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status发布于 2017-09-15 09:13:51
您使用了错误的链接器参数:
-L /home/X/my_lib/boost_1_64_0/stage/lib/*.so这应该是:
-L /home/X/my_lib/boost_1_64_0/stage/lib -l boost_numpy -l boost_python没有必要在PATH中设置Boost,除非万不得已,否则也不应该设置LD_LIBRARY_PATH。
永远不要将外壳通配符(*)用作构建命令的一部分。
https://stackoverflow.com/questions/46230221
复制相似问题