如何使用boost asio禁用自动链接?

时间:2013-04-19 00:32:12

标签: c++ xcode boost boost-asio clang

我有一个包含一些asio头文件的项目,我已经静态链接了boost_system,但ASIO不断向链接器添加-lboost_system,因此生成的二进制文件依赖于boost_system的动态版本,我有-DBOOST_ALL_NO_LIB(在“其他”中)链接标志“)以防止自动链接但似乎被忽略。

我正在使用带有clang和c ++ 11的XCode 4

还有其他方法可以防止自动隐藏吗?

1 个答案:

答案 0 :(得分:0)

结果是当我将.a文件添加到我的项目时,我需要将“文件类型”更改为Match-O目标代码,(因为此答案指向https://stackoverflow.com/a/6124806/520221注释),即使您添加文件到构建阶段选项卡中的“将文件链接到可执行文件”。

所以我认为ASIO在某种程度上知道库是否已经包含(静态或动态)。因为“文件类型”它永远不会被链接,所以asio包含-lboost_system标志。

另一个提示,你必须用libstdc ++构建boost和你的项目,它不能用于libc ++,我不知道为什么。看到这个How I do compile a application against a static library compiled with libc++ in xcode/clang/macos?,我认为这是一个错误或什么