簡體   English   中英

如何在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++添加到鏈接行:

鐺-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

添加后,缺少的符號消失。

我在NetBeans 7.4中的MacBook Pro OS X Mavericks 9.2上使用CLang ++編譯器,

-std=c++11 -stdlib=libc++ -Wall

我確定我是從安裝針對Mavericks的最新Xcode命令行工具中獲得的libc ++。 在我的系統上,動態libc ++庫位於/usr/lib目錄中。


開始編輯
我剛剛嘗試了從Xcode運行的基本“ Hello,World”,請確保將.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


所有工作均按預期進行。
結束編輯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM