在我试图回答我自己的问题时Clang 链接器报告“未找到符号”,尽管“nm -m”显示该名称存在于正在链接的库中 https://stackoverflow.com/questions/20599721/clang-linker-reports-symbol-not-found-despite-nm-m-revealing-that-the-name,我发现了一些链接,表明我必须在 OS X 上构建 Boost,以便它明确地使用 Clang 并链接到libc++
here https://stackoverflow.com/questions/11081818/linking-troubles-with-boostprogram-options-on-osx-using-llvm, here https://stackoverflow.com/questions/8454329/why-cant-clang-with-libc-in-c0x-mode-link-this-boostprogram-options-examp, and here http://cplusplusmusings.wordpress.com/2012/07/05/clang-and-standard-libraries-on-mac-os-x/.
按照指示的步骤进行操作(借助额外的谷歌搜索来协助/确认编辑过程user-config.jam
,将其放在我的主目录中,以及其他必要的步骤),我已将以下行添加到我的~/user-config.jam
file:
using clanglibcpp : 11
: "/usr/bin/clang++"
: <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++"
;
然后我跑了./b2
来自$BOOST_ROOT
目录:
./b2 toolset=clanglibcpp-11 --with-filesystem variant=release link=static threading=multi
不幸的是,无论我做什么,我都会收到以下错误:
ERROR: rule "clanglibcpp.init" unknown in module "toolset"
我已经确认/usr/bin/clang++
存在于指定的路径(确实如此)。我也尝试将以上行添加到$BOOST_ROOT/tools/build/v2/user-config.jam
(没有运气)。我也尝试过跑步./bootstrap.sh
从 boost 根目录,以及运行./b2 --clean
。没有运气。
我应该做什么才能真正获得工具集user-config.jam
对 OS X 上的 Boost 构建生效?
@llonesmiz 对 @Dan Nissenbaum 有效的答案:
我不确定,遗憾的是我现在无法检查,但是您可以尝试使用:
using clang : libcpp11
: "/usr/bin/clang++"
: <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++"
;
然后像这样调用 b2:
./b2 toolset=clang-libcpp11 --with-filesystem variant=release link=static threading=multi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)