C++ 如何使用 libc++

本篇 ShengYu 介紹 clang++ 如何使用 libc++,

在 Ubuntu 下要使用 libc++ 的話需要用 apt 安裝一下這個函式庫,指令如下,

1
sudo apt-get install libc++-dev

平常我們使用 g++ 編譯時預設會連結到 libstdc++,用法如下,

1
g++ main.cpp -o a.out

怎麼看編譯出來的執行檔連結到哪些函式庫可以看這篇

如果換成 clang++ 去編譯的話也是發現最後還是會連結到 libstdc++,

1
clang++ -stdlib=libc++ main.cpp -o a.out

那要怎麼去連結 libc++ 呢?

答案是用 clang++ 並且加上一個 -stdlib=libc++ 參數指定要使用 libc++ 這樣就會連結到 libc++ 了,

1
clang++ -stdlib=libc++ main.cpp -o a.out

PS. g++ 沒有 -stdlib= 參數的,-stdlib= 參數是clang++ 才有的,也就是說用 g++ 只有 libstdc++ 的選擇,要用 libc++請改用clang++。

其它參考
libc++: A Standard Library for C++0x - 2010 LLVM Developers’ Meeting
https://llvm.org/devmtg/2010-11/Hinnant-libcxx.pdf
c++ - When is it necessary to use the flag -stdlib=libstdc++? - Stack Overflow
https://stackoverflow.com/questions/19774778/when-is-it-necessary-to-use-the-flag-stdlib-libstdc
osx mavericks - Using g++ with libc++ - Stack Overflow
https://stackoverflow.com/questions/22228208/using-g-with-libc

其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 新手入門教學懶人包
std::vector 用法與範例
std::deque 介紹與用法
std::queue 用法與範例
std::map 用法與範例
std::unordered_map 用法與範例
std::set 用法與範例
std::thread 用法與範例
std::mutex 用法與範例
std::find 用法與範例
std::sort 用法與範例
std::random_shuffle 產生不重複的隨機亂數
std::shared_ptr 用法與範例
std::async 用法與範例