如何在Mac OS X Mavericks上链接std c++库
How to link in std C++ library on Mac OS X Mavericks?
我正在将应用程序移植到OS X Darwin,并且正在获得链接错误,缺少符号,如:
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >::find_last_of(char const*,
unsigned long,
unsigned long) const
operator delete[](void*)
typeinfo for std::runtime_error
std::set_unexpected(void (*)())
std::exception::~exception()
[...]
我希望这些应该来自libstdc++,但我不知道如何在clang中链接它们。
这是我尝试的链接行和结果失败:
clang -std=c++11 -stdlib=libc++ -m64 -o ARCH.darwin_1310_i86/release/myExec ARCH.darwin_1310_i86/release/myExec.o ../../src/netcomm/ARCH.darwin_1310_i86/release/libmyExec.a ../../src/common/ARCH.darwin_1310_i86/release/libcommon.a -L../zlib -lz -L../Botan -lbotan-1.10 -lboost_thread-mt
Undefined symbols for architecture x86_64:
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find_last_of(char const*, unsigned long, unsigned long) const", referenced from:
[...]
但是这不起作用,我没有找到任何如何正确链接它的例子
您需要像这样将-lc++
添加到链接行:
clang -std=c++11 -stdlib=libc++ -lc++ -m64 -o ARCH。darwin_1310_i86/释放/myExec ARCH.darwin_1310_i86/释放/myExec。o . ./. ./src/netcomm ARCH.darwin_1310_i86/释放/libmyExec。. ./. ./src/共同/ARCH.darwin_1310_i86/释放/libcommon。- l . ./zlib -lz -L../Botan - lplant -1.10 -lboost_thread-mt
添加后,缺失的符号将消失
在我的MacBook Pro OS X Mavericks 9.2上使用clang++编译器,在NetBeans 7.4中,我有
-std=c++11 -stdlib=libc++ -Wall
我确信我是通过安装最新的Xcode命令行工具获得libc++的。在我的系统上,动态libc++库位于/usr/lib
目录中。
开始编辑
我刚刚尝试了一个基本的,"Hello, World,"从Xcode运行,确保。xcodeproj中的LLVM 5.0 (clang++)编译器设置配置为:
C++ Language Dialect C++11 [-std=c++11]
C++ Standard Library libc++ (LLVM C++ Standard library with C++11 support)
C Language Dialect c11
一切正常。
结束编辑
相关文章:
- 返回一个带有 std::move 的对象并链接函数
- std::to_chars在MacOS/clang上编译但不链接
- C++ - 使用 std::list,如何打印对象的私有成员的链接列表?
- std::filesystem::directory_迭代器链接器问题(C++17)
- 架构x86_64的未定义符号链接constexpr std :: array
- std :: list(双重链接列表)未知运行时错误
- 链接器在标头中为 std::map 失败
- 涉及STD :: __ CXX11名称空间的链接器错误 - 双ABI问题
- 将静态参数克隆到 std::fill 导致链接器失败
- 尝试使用 std::函数(未定义的符号)声明模板化类状态时出现链接错误
- std::vector<>::p ush_back 导致 Arduino 上出现链接错误
- 链接webrtc本机时出错,因为未定义对具有std::string的方法的引用
- std::嵌入增加的链接时间
- 交叉编译:链接时对std::__atomic_futex_unsigned_base::_M_futex_notify_
- 创建带有const char*的对象时使用std::make_unique时发生链接错误
- 为什么我在尝试创建 std::numpunct 衍生物的实例时出现链接错误<char16_t>?
- C++命名空间std的定义方式/位置(文档/标准链接)
- 使用gfortran链接c++时std::basic_string的未定义符号
- 使用带有 std::unique_ptr 的模板的奇怪链接器错误
- 如何在Mac OS X Mavericks上链接std c++库