作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想为我正在从事的项目试用 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?
最佳答案
因为静态链接时,指定库和目标文件的顺序很重要。具体来说,必须在使用其中符号的目标文件之后提及库。
关于linux - 链接到 Boost 时如何知道何时使用 .a 或 .so?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1562172/
我是一名优秀的程序员,十分优秀!