【问题标题】:Linker Error : Statically Linking of Boost Serialization Library链接器错误:Boost 序列化库的静态链接
【发布时间】:2012-09-28 16:55:30
【问题描述】:

我正在尝试将 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 toboost::archive::text_oarchive_impl::text_oarchive_impl(std::basic_ostream >&, unsigned int)' ………… collect2: ld 返回 1 个退出状态

但是当我作为共享库链接时, g++ serialize.cpp -lboost_serialization ,效果很好。

我在这里错过了什么

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

【问题讨论】:

  • 静态链接使用-static关键字执行。此外,-l* 和 -L"lib*.a" 是相同的东西。

标签: c++ boost linker


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 2018-12-11
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 2012-02-02
      相关资源
      最近更新 更多