相关疑难解决方法(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万
查看次数

编译boost C++ 11 clang mac找不到cstddef

我无法使用Mac OS x 10.8.2上的clang 3.1编译boost.

这就是我做的:

./bootstrap.sh --with-toolset=clang
./b2 toolset=clang cxxflags="-std=c++11 -stdlib=libc++" linkflags="-stdlib=libc++"
Run Code Online (Sandbox Code Playgroud)

我也试过没有计时,测试,波动和信号.我尝试了一个user-config.jam

using clang-darwin
Run Code Online (Sandbox Code Playgroud)

这是我几乎每个文件都有的错误:

/boost/config/select_stdlib_config.hpp:18:12: fatal error: 'cstddef' file not found
Run Code Online (Sandbox Code Playgroud)

它有点类似于如何用clang ++/libc ++编译/链接Boost?

谢谢 :-)

更新:我确实安装了最新的Xcode 4.5.2并安装了命令行工具.

这是控制台输出的一部分:

Kikohs:trunk kikohs$ ./b2 toolset=clang cxxflags="-std=c++11 -stdlib=libc++" linkflags="-stdlib=libc++"
Performing configuration checks

- 32-bit                   : no
- 64-bit                   : yes
- x86                      : yes
- has_icu builds           : no
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam …
Run Code Online (Sandbox Code Playgroud)

c++ boost clang c++11

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

构建库时的Clang和undefined符号

我正在研究一个C++框架,当我在使用Clang的OSX上编译它时会出现一些问题.

首先,我正在使用其他一些库,例如openssl,而clang抱怨我在构建库时没有解决某些符号.它们不应该是:这些库将与最终的二进制文件链接,它不应该发生在中介上.

然后,还有一些方法和变量应该在"客户端"二进制文件中实现...使用GCC,没有问题,但Clang也抱怨这些符号在编译期间无法解决.

怎么会 ?我该怎么办 ?

这是我的CMakeLists.txt,以防有用:

cmake_minimum_required(VERSION 2.8)

project(crails_project)

set(CMAKE_CXX_FLAGS "-std=c++0x -Wall -Wno-deprecated-declarations -pedantic -DASYNC_SERVER -DSERVER_DEBUG -DUSE_MONGODB_SESSION_STORE")

find_package(cppnetlib REQUIRED)

include_directories(include /usr/local/include ${CPPNETLIB_INCLUDE_DIRS} .)

file(GLOB crails_core
     src/*.cpp)

file(GLOB crails_sql
     src/sql/*.cpp)

file(GLOB crails_mongodb
     src/mongodb/*.cpp)

add_library(crails-core    SHARED ${crails_core})
add_library(crails-sql     SHARED ${crails_sql})
add_library(crails-mongodb SHARED ${crails_mongodb})
Run Code Online (Sandbox Code Playgroud)

这是崩溃的命令:

/usr/bin/c++  -std=c++0x -Wall -Wno-deprecated-declarations -pedantic -DASYNC_SERVER -DSERVER_DEBUG -DUSE_MONGODB_SESSION_STORE -dynamiclib -Wl,-headerpad_max_install_names   -o libcrails-core.dylib -install_name /Users/michael/Personal/crails/build/libcrails-core.dylib CMakeFiles/crails-core.dir/src/assets.cpp.o CMakeFiles/crails-core.dir/src/cgi2params.cpp.o CMakeFiles/crails-core.dir/src/cipher.cpp.o [...]
Run Code Online (Sandbox Code Playgroud)

以下是我得到的两种错误:

架构x86_64的未定义符号:

  "_BIO_ctrl", referenced from:
      Cipher::encode_base64(unsigned char*, unsigned int) const in cipher.cpp.o
Run Code Online (Sandbox Code Playgroud)

第二个:

  NOTE: a missing vtable usually means …
Run Code Online (Sandbox Code Playgroud)

c++ cmake clang

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

使用clang ++/libc ++删除Boost libstdc ++依赖项?

这个问题的答案如何使用clang ++/libc ++编译/链接Boost?陈述Boostclang++libc++,以下应该做:

./b2 clean
./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++"
Run Code Online (Sandbox Code Playgroud)

我在Scientific Linux 6.4 x86_64主机上测试了上述提示,它"主要"用于构建完整的Boost 1_53_0发行版,使用clang++ 3.3svlibc++ 3.3svn.我大多说,因为我真的想删除所有的libstdc++依赖.

不过,以下内容:

  • libboost_graph
  • libboost_locale
  • libboost_regex

仍显示libstdc++依赖关系(ldd输出使其非常明显).我想知道一个很好的方法来删除这样的,并会欣赏任何提示.

c++ boost clang libstdc++ libc++

7
推荐指数
1
解决办法
2245
查看次数

链接器错误 - 带有libboost_thread的macos上的未定义符号std :: string :: c_str()const?

我在macos mavericks上从自制软件安装了1.55.0增强版.获取链接器异常 - 找不到std :: string :: c_str(),我不明白为什么.这可能是自制软件的问题吗?我尝试直接从boost编译boost 1.55.0,它甚至没有在macos上构建.

这一点代码:

#include <iostream>
#include <unordered_map>
#include <vector>
#include <boost/thread/tss.hpp>

typedef std::unordered_map<std::string, std::string> StringMap;
static boost::thread_specific_ptr<std::vector<StringMap*>> rlist;


int main()
{
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用此命令行编译:

g++ -std=c++11 main.cpp -I/usr/local/include -L/usr/local/lib -lboost_thread -lboost_system -lboost_atomic -lboost_log -lstdc++
Run Code Online (Sandbox Code Playgroud)

抛出此链接器异常:

Undefined symbols for architecture x86_64:
  "std::string::c_str() const", referenced from:
      boost::system::system_error::what() const in libboost_thread.a(thread.o)
  "std::string::empty() const", referenced from:
      boost::system::system_error::what() const in libboost_thread.a(thread.o)
  "std::allocator<char>::allocator()", referenced from:
      boost::system::system_error::system_error(boost::system::error_code, char const*) in libboost_thread.a(thread.o)
      boost::system::(anonymous namespace)::generic_error_category::message(int) const in libboost_system.a(error_code.o)
  "std::allocator<char>::~allocator()", …
Run Code Online (Sandbox Code Playgroud)

c++ linker homebrew boost c++11

6
推荐指数
1
解决办法
9003
查看次数

标签 统计

c++ ×5

boost ×4

clang ×4

c++11 ×3

libc++ ×2

cmake ×1

homebrew ×1

libstdc++ ×1

linker ×1