相关疑难解决方法(0)

为什么不能用c ++ 0x模式中的libc ++来链接这个boost :: program_options示例?

编译boost :: program_options的示例代码:http://svn.boost.org/svn/boost/trunk/libs/program_options/example/first.cpp

...在MacOS Lion(10.7.2)上,使用随MacPorts安装的boost-1.48.0:

$ clang++ -v
Apple clang version 3.0 (tags/Apple/clang-211.12) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin11.2.0
Thread model: posix
$ clang++ -std=c++0x --stdlib=libc++ -lc++ -I/opt/local/include -L/opt/local/lib -lboost_program_options first.cpp -o first
Undefined symbols for architecture x86_64:
  "boost::program_options::options_description::options_description(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, unsigned int)", referenced from:
      _main in cc-6QQcwm.o
  "boost::program_options::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, boost::program_options::options_description const&)", referenced from:
      _main in cc-6QQcwm.o
  "boost::program_options::abstract_variables_map::operator[](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const", referenced from:
      boost::program_options::variables_map::operator[](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const in …
Run Code Online (Sandbox Code Playgroud)

c++ boost clang c++11 libc++

64
推荐指数
1
解决办法
2万
查看次数

llvm-gcc和clang二进制文件是否与gcc兼容? - 尤其是Windows上的mingw gcc

如果我使用llvm-gcc构建一个静态库,然后将它与使用mingw gcc编译的程序链接,结果是否有效?

对于llvm-gcc,clang和普通gcc的其他组合也是如此.我对如何在Linux(当然使用普通的非mingw gcc)和其他平台上工作感兴趣,但重点是Windows.

我也对所有语言感兴趣,但强调C和C++ - 显然clang不支持Fortran等,但我相信llvm-gcc会这样做.

我假设它们都使用ELF文件格式,但是调用约定,虚拟表格布局等呢?

linker gcc llvm clang llvm-gcc

27
推荐指数
1
解决办法
1万
查看次数

Boost:为什么 ~/user-config.jam 中列出的工具集不可用于 ./b2?

在我尝试回答我自己的问题时,Clang 链接器报告“未找到符号”,尽管“nm -m”显示该名称存在于正在链接的库中,但我发现了一些链接,表明我必须在操作系统上构建 Boost X 以便它显式使用 Clang 并链接到libc++ 此处此处此处

按照指示的步骤(借助额外的谷歌搜索来协助/确认编辑过程user-config.jam,将其放入我的主目录以及其他必要的步骤),我已将以下几行添加到我的~/user-config.jam文件中:

using clanglibcpp : 11
    : "/usr/bin/clang++"
    : <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++"
    ;
Run Code Online (Sandbox Code Playgroud)

./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 版本中生效?

c++ macos boost

5
推荐指数
1
解决办法
3045
查看次数

标签 统计

boost ×2

c++ ×2

clang ×2

c++11 ×1

gcc ×1

libc++ ×1

linker ×1

llvm ×1

llvm-gcc ×1

macos ×1