本篇 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 用法與範例