C++ 在Linux上用zlib编译boost

C++ 在Linux上用zlib编译boost,c++,boost,compilation,linker,zlib,C++,Boost,Compilation,Linker,Zlib,我试图编译一段使用Boost的zlib包装器的代码。然而,无论我做什么,我都不能让它工作 在我的cpp文件中,我有以下标题: #include <algorithm> #include <fstream> #include <vector> #include <boost/archive/binary_oarchive.hpp> #include <boost/archive/binary_iarchive.hpp> #include

我试图编译一段使用Boost的zlib包装器的代码。然而,无论我做什么,我都不能让它工作

在我的cpp文件中,我有以下标题:

#include <algorithm>
#include <fstream>
#include <vector>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <boost/iostreams/filtering_stream.hpp>
Boost本身是在运行命令后使用bjam构建的:

g++ -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -L/usr/lib -lboost_filesystem -lboost_serialization -lz -I /usr/include/boost -o zlib_test zlib_test.o
./bootstrap.sh --prefix=/home/anon/boost --with-libraries=filesystem,program_options,system,serialization
我收到的错误消息如下:

zlib_test.o: In function `boost::detail::sp_counted_impl_p<boost::iostreams::symmetric_filter<boost::iostreams::detail::zlib_compressor_impl<std::allocator<char> >, std::allocator<char> >::impl>::dispose()':
zlib_test.cpp:(.text._ZN5boost6detail17sp_counted_impl_pINS_9iostreams16symmetric_filterINS2_6detail20zlib_compressor_implISaIcEEES6_E4implEE7disposeEv[boost::detail::sp_counted_impl_p<boost::iostreams::symmetric_filter<boost::iostreams::detail::zlib_compressor_impl<std::allocator<char> >, std::allocator<char> >::impl>::dispose()]+0x30): undefined reference to `boost::iostreams::detail::zlib_base::reset(bool, bool)'
zlib_test.o:在函数'boost::detail::sp_counted\u impl_p::dispose()'中:
zlib_test.cpp:(.text.ZN5boost6detail17sp_counted_impl_pINS_9;iostreams16对称过滤器2_6detail20zlib_compressor_6;implISaIcEEES6_e4;impleee7disposeev[boost::detail::sp_counted_impl_p::dispose()]+0x30):对“boost::iostreams::details::details::zlib_base::base::reset(bool,bool)”的未定义引用
等等


关于如何编译这段代码有什么想法吗?如果重要的话,这是在Centos 5机器上。

好的,我发现了问题。编译Boost时,我忘记编译iostreams

因此,构建Boost的命令应该是:


./bootstrap.sh--prefix=/home/andyyen/boost--with libraries=文件系统、程序选项、系统、序列化、iostreams

好的,我发现了问题。编译Boost时,我忘记编译iostreams

因此,构建Boost的命令应该是:

./bootstrap.sh--prefix=/home/andyyen/boost--with libraries=文件系统、程序选项、系统、序列化、iostreams