2014-11-17 116 views
1

我想建立一個非常小的GCC(4.9)子集,基本上我只需要C編譯器(一個靜態鏈接的二進制文件將是完美的)。整個GCC構建系統似乎非常複雜,沒有關於最小構建的文檔。我花了一個多小時閱讀關於配置和構建GCC的文檔,但我對結果還不滿意。最小GCC編譯

./configure選擇我到目前爲止有以下幾種:

  • --enable-languages=c
  • --disable-bootstrap
  • --disable-multilib
  • --disable-nls

製作和安裝之後,我仍然看到噸文件在目錄01中,所以我不知道--disable-nls是關於。我也想知道目錄/usr/local/lib/gcc/*/[gcc-version]的內容,它真的需要嗎?

任何幫助表示讚賞。

+0

IIRC它不會將庫鏈接到libintl或嘗試構建libintl源作爲GCC樹的一部分。 –

回答

1

按照documentation--disable-nls確實是禁用本地化正確的開關:

--enable-nls選項啓用本地語言支持(NLS),它允許在比美國英語語言GCC輸出診斷。如果不進行加拿大交叉構建,默認情況下啓用母語支持。 --disable-nls選項禁用NLS。

該選項可能被破壞。如果它真的只來自GCC,您可以刪除/usr/local/share/locale的內容!仔細檢查!你可能不想刪除其他程序的本地化(當然,除非你不關心它們)。

/usr/local/lib/gcc/*/[gcc-version]中的文件非常重要,非常重要!它們包含內部文件,例如實際編譯器cc1和鏈接器助手collect2。你還會發現一些頭文件的「固定」版本會覆蓋系統頭文件(這些頭文件是GCC認爲以某種方式破壞的頭文件,並且它被修復;有時這些「修復」實際上可能會阻礙你,但通常你不想混淆這些文件)。

+0

'cc1'和'collect2'實際上在'/ usr/local/libexec/*'目錄下,而不是'/ usr/local/lib/*'。有沒有辦法禁用這些「固定」的頭文件?以我的觀點來看,在系統上打破標題的假設是錯誤的。 – watain

+0

您可以簡單地刪除「固定」頭文件,但我很確定GCC的人不會僅僅爲了好玩。他們這樣做肯定有一個很好的理由。我看到的一個原因是,混淆實際的系統頭文件是一個非常糟糕的主意(特別是當您並行安裝多個可能支持不同C/C++特性的GCC版本時)。 – DarkDust