上述代码命名为test.cpp,使用如下命令编译:
g++ -o main test.cpp
报错主要是undefined reference to boost::archive::archive_exception::archive_exceptiono();
网上说需要在编译的时候指定要使用的动态链接库,于是修改编译命令:
g++ -o main test.cpp -lboost_serialization
报错主要是undefined reference to boost::archive::text_iarchive_impl<boost::archive::text_iarchive>
undefined reference to boost::archive::archive_exception::~archive_exception()等
继续搜索,修改编译命令如下:
g++ -o main test.cpp -lboost_serialization -L /usr/boost_1_60_0/stage/lib
终于不报错了,但是执行./main的时候再次遇到错误: error while loading shared libraries: libboost_serialization.so.1.60.0: cannot open shared object file: No such file or directory .
解决:
1. 首先 find / -name libboost_serialization.so.1.60.0找到缺少的链接文件到底在那儿。
2. 使用LD_DEBUG=libs /usr/Coding/bin/main -v找到程序要去哪里找链接库。
3. 假设 trying file=/usr/lib/libboost_serialization.so.1.60.0 而链接库的实际存储位置是 /usr/local/lib/libboost_serialization.so.1.60.0,做一个软连接 ln -s /usr/local/lib/libboost_serialization.so.1.60.0 /usr/lib/libboost_serialization.so.1.60.0
转载于:https://www.cnblogs.com/ttssrs/p/5302367.html
