1

我想为我正在处理的项目尝试 Boost::Serialization 库。我也在尝试习惯在 Linux 中编程。我在其默认位置设置了 boost。我尝试使用他们提供的命令行参数编译他们在此处提供的测试文件,并且效果很好。在此示例中,他们使用 .a 文件。

然后我转到序列化页面并尝试运行其中一个序列化演示。我运行了基本相同的命令,除了我换掉了文件名并链接到 libboost_serialization.a 而不是 libboost_regex.a,但我得到了一堆错误。在使用了不同的选项并仔细检查了目录之后,我终于通过将 .a 替换为 .so 文件来使其工作。

仅供参考,最终对我有用的是:

g++ /usr/local/lib/libboost_serialization.so sertest.cpp -o sertest 

为什么我链接到 .a 文件的一个示例,而在另一个示例中我必须链接到 .so?

4

1 回答 1

4

因为在静态链接时,指定库和目标文件的顺序很重要。具体来说,必须在使用其中符号的目标文件之后提及库。

于 2009-10-15T17:13:25.823 回答