2013-07-29 109 views
9

編輯/更新/注意:讓clang使用libstdC++。到目前爲止,我一直在爲我工作得很好。在Linux上爲clang構建libC++的認可方式是什麼?

===============================

在過去,我已經能夠成功通過做cmake,但剛纔我在http://llvm.org/svn/llvm-project/libcxx/trunk項目樹的lib目錄中發現了buildit腳本。

buildit腳本似乎不使用libsupc++這是我以前使用的cmake方法。例如,this guide顯示一個cmake咒語,用於生成libc++的makefile,該文件將能夠處理編譯和安裝。

我的問題是生產LLVM- libc++這些不同的方法和應該使用哪一種方法之間的區別是什麼?他們會有不同的表現嗎?

buildit腳本似乎沒有提供任何安裝幫助。如何正確安裝磁帶庫有沒有方向?用我之前用cmake構建的libC++,我必須總是將-lc++添加到鏈接器標誌(和-L的路徑),這在我的OS X makefile中不是必需的。

+0

我讀了多一些的正是'libsupC++'是,顯然這是GCC的'的libC++'的一個子集。 'buildit'腳本似乎鏈接'libC++',所以我猜這裏沒有什麼是令人驚訝的,也許我只需要調整一些'cmake'標誌以獲得更簡化的安裝。儘管如此,我還是很欣賞一些比我更瞭解LLVM的人的一般解釋。 –

+0

您的意思是'libsupC++'爲GCC的'libstdC++'提供了一些與ABI相關的(和其他)功能。 – rubenvb

回答

3

libc++ website對構建libC++的可能方式有一個很好的概述。

我建議使用CMake + libc++abi

另請參閱Arch Linux User Repository build script,它使用buildit腳本。我安裝了從libc中++,並與Arch Linux的鏘包用它成功地利用

clang++ -std=c++11 -stdlib=libc++ -lc++abi 
+3

那麼,我在CentOS 6.4上,它使得它比平常稍微難一些,因爲很多東西都是......老。除了4.4.7 dirs之外,我還必須包含額外的路徑'/ usr/include/C++/4.4.4;/usr/include/C++/4.4.4/x86_64-redhat-linux',並且複製'cxxabi在'cmake'調用成功之前,將'-forced.h'(在'4.4.4 /'中)改爲'bits/cxxabi_forced.h'。這太痛苦了!這將在我的機器初始化腳本中進行,所以稍後我會好起來的。但是有人需要提出一些不那麼痛苦的事情,因爲這不是做它唯一的工作。 –

+1

我還必須在'cxxabi.h'中將'#include'從'cxxabi-forced.h'更改爲'bits/cxxabi_forced.h'以獲得libC++。so'make'調用才能成功。 –

+1

這不再適用(使用SVN libC++)。因此,使用'-std = C++ 0x -stdlib = libC++'進行編譯的任何嘗試都會導致對'std :: nested_exception'vtable的神祕'未定義引用' –

相關問題