2013-02-08 24 views
5

我正在使用CentOS 6機器,它具有非常古老的GCC/GlibC版本。我想用最新的或至少非常新的版本構建整個glibc,binutils,gcc工具鏈,以便在最新的gcc中使用C++ 11,在最近的binutils中使用ld.gold,並且可能在最近的glibc中進行改進。關於在CentOS上構建整個工具鏈的教程

我想把整個工具鏈放在一個單獨的目錄下,而不是影響任何現有的系統文件。我也想用--sys-root構建gcc,這樣在使用gcc時,我不需要指定-I/some/directory/include和-L/some/directory/lib或其他任何參數。此外,生成的可執行文件將自動使用新的ld-linux-xxxxx程序加載程序,該加載程序將自動查找新的libc.so.

任何人都知道這個任務是否存在一些教程?

+0

您不能在舊系統的chroot中安裝最近的CentOS嗎? –

+0

你已經嘗試過從這裏的指令:http://gcc.gnu.org/install/?如果是的話,你卡在哪裏?請給我們展示一些研究意圖。 –

+0

我其實花了很長時間嘗試他們,但實際上根本不起作用。麻煩的主要來源是glibc,其中ld-linux-xxxx找不到正確的libc.so,並且頭文件安裝在gcc找不到它的錯誤位置等。 –

回答

-2

如果你需要最新的工具鏈,你最好遷移到Fedora。

如果你不能/不會,最好的辦法是把這些作品作爲CentOS和Fedora的源代碼RPM,解開它們並通過竊取Fedora的源代碼和補丁來修復CentOS,注意它不會不推翻系統軟件包,更正版本並修復其他地方的安裝(不要搞亂你的系統!/usr/local想到)。這些作品至少是binutils,gcc。

+0

該指令太抽象了我無法跟隨。 –

+0

@icando,是的,它非常複雜。而且不能保證你不會以嚴重破壞的系統結束。而且,無論您使用該工具鏈構建的任何內容都無法運行。如果您真的需要C++ 2011功能,請獲取最新的系統,以便您可以無縫使用它,而無需在您身邊進行任何額外的廣泛工作。如果你想玩弄新功能,你甚至可以在一臺虛擬機上運行Fedora 18。或者等RHEL/CentOS 7 ... – vonbrand

-1

我不知道爲什麼你需要這個?如果需要爲另一臺計算機編譯,我建議使用運行相同操作系統的虛擬機作爲目標。更容易!

+0

我不是在交叉編譯。我只需要一臺機器本身的編譯器。正如我所提到的,centos上的工具鏈太舊,不支持任何C++ 11功能。也沒有ld.gold。 VM不是一個選項,因爲centos機器在虛擬機中運行。 –

0

編譯器非常依賴glibc,儘管您可以在chrooted系統或同等版本中構建編譯器,但您還需要構建所有與您將使用此新編譯器構建的程序所需的庫。 你能做的最好是用一個全新的系統(VM或其他)或升級現有

-2

關注通1和傳遞的Linux From Scratch 2的binutils,GCC,glibc的和libstdC++。停在第2步gcc。 glibc將需要centos linux內核頭文件yum install kernel-headers-$(uname -r) -installs as->/usr/src/linux-headers-$(uname -r)

+0

我花了很多時間嘗試這一個,但它根本不起作用。原因是LFS將這些工具安裝在/ a/b/c/tools之類的東西上,並且有一個符號鏈接/工具 - >/a/b/c/tools。安裝只能通過/ tools工作,因爲它打算被chrooted到/ a/b/c,並且我測試瞭如果沒有符號鏈接/工具,它就無法工作。主要的問題是glibc,如果你設置了prefix =/tools,那麼ld-linux.so.2在沒有符號鏈接/工具的情況下找不到libc。如果你安裝了prefix =/a/b/c/tools,那麼g ++會嘗試在/ a/b/c/tools/a/b/c/tools找到libc。 –

0

您可以從Openembedded或Yocto下載最新的工具鏈。 在這裏,您不必對當前系統進行任何軟件包安裝。 只需下載工具鏈,即可獲取環境,並且您已準備好檢查C++ 11的支持。 下載工具鏈的位置: http://downloads.yoctoproject.org/releases/yocto/yocto-1.7/toolchain/(只需根據您的機器支持選擇32位或64位體系結構)