[英]Compilation error in boost iostreams when building from source
我正在尝试从源代码构建依赖于Boost iostream的Linux二进制文件。 Boost也是从我的机器上的源代码构建的。 我收到以下错误消息,这似乎是Boost中的编译错误:
g++ -g -O2 -o mkdssp src/dssp.o src/iocif.o src/mas.o src/mkdssp.o src/primitives-3d.o src/structure.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread -lpthread
src/mkdssp.o: In function `boost::iostreams::detail::bzip2_decompressor_impl<std::allocator<char> >::~bzip2_decompressor_impl()':
/usr/local/include/boost/iostreams/filter/bzip2.hpp:361: undefined reference to `boost::iostreams::detail::bzip2_base::end(bool, std::nothrow_t)'
src/mkdssp.o: In function `boost::iostreams::detail::bzip2_compressor_impl<std::allocator<char> >::~bzip2_compressor_impl()':
/usr/local/include/boost/iostreams/filter/bzip2.hpp:321: undefined reference to `boost::iostreams::detail::bzip2_base::end(bool, std::nothrow_t)'
我在其他地方也看到过类似的帖子,但没有解决方法。 请注意,我的机器上没有sudo,因此进行rpm install this
或yum install that
并不是我真正的选择。 我猜我正在寻找的是有关如何重建助推器的说明。
我的版本:
提前致谢
您需要在链接器命令行中添加-L<boost-libs-dir> -Wl,-rpath=<boost-libs-dir>
。 <boost-libs-dir>
是您构建的Boost库所在的位置,例如/usr/local/lib
因为boost标头位于/usr/local/include
。
如果在构建boost时未指定--layout=system
,则还需要在库名称中指定版本号,例如-lboost_thread-gcc-mt-1_61
或类似的名称。 阅读Boost库命名以获取完整详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.