gpt4 book ai didi

c++ - 如何在 Mac OS X Mavericks 上链接标准 C++ 库?

转载 作者:搜寻专家 更新时间:2023-10-31 01:45:02 24 4
gpt4 key购买 nike

我正在将一个应用程序移植到 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/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

添加之后,缺失的符号消失了。

关于c++ - 如何在 Mac OS X Mavericks 上链接标准 C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22649406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com