链接器错误:静态链接Boost序列化库

时间:2012-09-28 16:55:31

标签: c++ boost linker

我正在尝试将Boost序列化库链接到我的代码。但它似乎没有起作用。

g ++ serialize.cpp -L“/usr/local/lib/libboost_serialization.a”

错误:

/tmp/ccw7eX4A.o:在函数boost::archive::text_oarchive::text_oarchive(std::basic_ostream<char, std::char_traits<char> >&, unsigned int)': serializep.cpp:(.text._ZN5boost7archive13text_oarchiveC2ERSoj[_ZN5boost7archive13text_oarchiveC5ERSoj]+0x25): undefined reference to boost :: archive :: text_oarchive_impl :: text_oarchive_impl(std :: basic_ostream&gt;&amp;,unsigned int)' .......... collect2:ld返回1退出状态

但是当我作为共享库链接时, g ++ serialize.cpp -lboost_serialization,它工作正常。

我在这里缺少什么

P.S:其他具有相同问题的StackOverflow帖子没有适合上述错误的答案

2 个答案:

答案 0 :(得分:1)

  

g ++ serialize.cpp -L“/usr/local/lib/libboost_serialization.a”

此命令行完全错误:-L标志告诉链接器在哪里查找库; not 告诉链接器使用您提供的库。试试这个:

g++ serialize.cpp /usr/local/lib/libboost_serialization.a

答案 1 :(得分:0)

由于我无法重现您的问题,我能做的更好的是告诉您我通常如何静态编译boost_serialization:

 g++ myapp.cpp -o myapp -Wall -static -static-libgcc -I/usr/local/include -L/usr/local/lib -lboost_serialization -lpthread