我想为我正在研究的项目试用Boost :: Serialization库。我也试图习惯在Linux中编程。我在其默认位置设置了boost。我尝试使用它们提供的命令行参数编译它们提供的测试文件here并且它工作正常。在此示例中,他们使用.a文件。
然后我进入了序列化页面,尝试运行其中一个serialization demos。我运行了基本相同的命令,除了我换掉文件名并链接到libboost_serialization.a而不是libboost_regex.a,但我收到了一堆错误。在玩了不同的选项并仔细检查目录后,我终于通过将.a替换为.so文件来使其工作。
仅供参考,最终对我有用的是:
g++ /usr/local/lib/libboost_serialization.so sertest.cpp -o sertest
为什么我链接到.a文件的一个例子,另一个我必须链接到.so?
答案 0 :(得分:4)
因为静态链接时,指定库和目标文件的顺序很重要。具体来说,必须在使用符号的目标文件之后提及库。