0

我正在尝试使用 clang 编译 boost C++。

./b2 --prefix=~/boost --includedir=~/boost/include --libdir=~/boost/lib toolset=clang cxxflags="-std=c++11 -stdlib=libc++ -isystem ~/libcxx/include/" linkflags="-stdlib=libc++ -L ~/libcxx/lib/"

当我看到日志文件时,它给出了错误提示

 Undefined symbols for architecture x86_64:
 "boost::system::system_category()", referenced from:
  __GLOBAL__I_a in exceptions.o
 "boost::system::generic_category()", referenced from:
  __GLOBAL__I_a in exceptions.o
  ld: symbol(s) not found for architecture x86_64
 clang: error: linker command failed with exit code 1 (use -v to see invocation)

我的默认 clang 是 clang-mp-3.3。谁能帮我弄清楚这个问题是什么。

4

1 回答 1

0

在网上搜索错误原因后,我发现了这个解释了用 clang 编译 boost。我不确定为什么添加define=BOOST_SYSTEM_NO_DEPRECATED使它起作用。请任何知道它为什么起作用的人发表评论。然后我能够毫无错误地编译,但我仍然看到一些警告,但它现在对我有用。

我使用的默认 clang 是 (clang-mp-3.3)

$ 铿锵 -v

clang 版本 3.3 (tags/RELEASE_33/final) 目标:x86_64-apple-darwin11.4.2 线程模型:posix

 ./bootstrap.sh --with-toolset=clang --without-libraries=mpi,python,graph_parallel
 ./b2 clean
 ./b2 toolset=clang cxxflags="-std=c++11 -stdlib=libc++"  linkflags="-stdlib=libc++"  define=BOOST_SYSTEM_NO_DEPRECATED
于 2013-07-28T00:07:05.127 回答