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

How can I disable automatic linking using boost asio?

本文关键字:boost asio 链接 何禁用      更新时间:2023-10-16

我有一个包括一些asio头文件的项目,我已经静态链接了boostrongystem,但是asio不断添加-lboostrongystem到链接器,所以产生的二进制文件取决于boostrongystem的动态版本,我有-DBOOST_ALL_NO_LIB(在"其他链接标志"中)以防止自动链接,但它似乎被忽略了。

我使用XCode 4与clang和c++11

有其他方法来防止自动链接吗?

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

所以我认为ASIO在某种程度上知道库是否已经包含(静态或动态)。由于"文件类型"的不同,它永远不会被链接,所以我们包含-lboostrongystem标志。

另一个提示,你必须用libstdc++来构建boost和你的项目,它不能用libstdc++工作,我不知道为什么。我如何在xcode/clang/macos中用libc++编译的静态库编译应用程序?