【发布时间】:2014-02-06 16:33:39
【问题描述】:
我已经使用以下命令构建了 boost 1.55 序列化库:
b2 --build-dir=build toolset=gcc --with-serialization --layout=tagged link=static threading=multi stage
并在我的stage/lib 目录中获得了libboost_serialization-mt.a 和libboost_wserialization-mt.a - 很好。然后我将boost_serialization 添加到我的C::B 项目的链接器库列表中并编译了boost serialization example,它从命令行运行良好。然后,我另外使用
b2 --build-dir=build toolset=gcc --with-serialization --layout=tagged link=static,shared threading=multi,single stage
并在我的stage/lib 目录中获得了更多库,正如预期的那样。令我困惑的是,每个库都有一个.so 文件,即使是那些应该是静态的。为什么会在那里?需要什么?
当我现在编译项目时,可执行文件报错:
error while loading shared libraries: libboost_serialization.so.1.55.0: cannot open shared object file: No such file or directory
该库确实存在,我可能只需将其路径添加到LD_LIBRARY_PATH,但我现在想静态链接。我该怎么做?
我也不太了解库命名:我的lib 文件夹中有一些libboost_wserialization... 库,并且serialization 的w 前缀在当前@987654322 的库命名部分中没有描述@。
您的回答让我对发生的事情有了更好的了解 - 现在我知道 boost_wserialization 库的来源。我发现,在进行第二次构建后,所有 现有的库都被共享了,而静态库被覆盖了。这就是为什么我对那些以前确实是静态的库的“额外”.so 文件感到困惑。
【问题讨论】:
标签: c++ gcc boost linker codeblocks