歡迎您光臨本站 註冊首頁

Binutils與GCC配置選項簡介

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  
版權聲明
本文作者是一位自由軟體愛好者,所以本文雖然不是軟體,但是本著 GPL 的精神發布。任何人都可以自由使用、轉載、複製和再分發,但必須保留作者署名,亦不得對聲明中的任何條款作任何形式的修改,也不得附加任何其它條件。您可以自由鏈接、下載、傳播此文檔,但前提是必須保證全文完整轉載,包括完整的版權信息和作譯者聲明。

其他作品
本文作者十分願意與他人共享勞動成果,如果你對我的其他翻譯作品或者技術文章有興趣,可以在如下位置查看現有作品的列表:
金步國作品列表

BUG報告,切磋與探討
由於作者水平有限,因此不能保證作品內容準確無誤,請在閱讀中自行鑒別。如果你發現了作品中的錯誤,請您來信指出,哪怕是錯別字也好,任何提高作品質量的建議我都將虛心接納。如果你願意就作品中的相關內容與我進行進一步切磋與探討,也歡迎你與我聯繫。聯繫方式:Email: csfrank@citiz.net ; QQ: 70171448 ; MSN: csfrank122@hotmail.com

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


此文是我在寫作《DIY一個實用的 Mini-LAPP 伺服器》過程中整理的資料,由於LFS的關鍵之一在於工具鏈的製作,而GCC與binutils是工具鏈的核心(還有一個Glibc),因此特地把這部分內容抽取出來單獨成文,以供 LFS 玩家參考。

Binutils 配置選項簡介(適用於2.17)

要查看完整的配置選項,除了源碼樹根目錄下運行"configure --help"查看外,還需要查看原碼樹的每個子目錄下的 README 文件,以及在每個子目錄中運行"configure --help"查看[真麻煩!]。
下列選項皆為非默認值[特別說明的除外]
[提示]如果只想編譯 ld 可以使用"make all-ld",如果只想編譯 as 可以使用"make all-gas"。

--cache-file=FILE
--help
--no-create
--quiet, --silent
--version
--prefix=PREFIX
--exec-prefix=EPREFIX
--bindir=DIR
--sbindir=DIR
--libexecdir=DIR
--datadir=DIR
--sysconfdir=DIR
--sharedstatedir=DIR
--localstatedir=DIR
--libdir=DIR
--includedir=DIR
--oldincludedir=DIR
--infodir=DIR
--mandir=DIR
--srcdir=DIR
--program-prefix=PREFIX
--program-suffix=SUFFIX
--program-transform-name=PROGRAM
--build=BUILD
--host=HOST
--target=TARGET
這些選項的含義基本上通用於所有軟體包,這裡就不特別講解了。
--enable-64-bit-bfd
支持64位目標。如果指定的目標是64位則此選項默認打開,否則默認關閉(即使 --enable-targets=all 也是如此)。要開啟此選項,編譯器必須支持64位整數(比如 gcc)。
--enable-bfd-assembler
簡而言之,你不需要明確指定該選項,完全可以忽略它的存在,因此也就不需要理解它的含意。
--enable-install-libbfd
允許安裝 libbfd 以及相關的頭文件(二進位文件描述庫,用於讀寫目標文件".o",被GDB/ld/as等程序使用)。
--enable-commonbfdlib
編譯共享版本的 BFD/opcodes/libiberty 庫。
--enable-install-libiberty
安裝libiberty的頭文件(libiberty.h),許多程序都會用到這個庫中的函數(getopt,strerror,strtol,strtoul)。
--enable-shared[=PKGS]
將指定的PKGS(逗號分隔的列表)編譯為共享庫,目前僅可使用:bfd,opcodes 。此選項在不同子目錄下默認值不同,有些為"yes"有些為"no"。
--enable-static[=PKGS]
將指定的PKGS(逗號分隔的列表)編譯為靜態庫,目前僅可使用:bfd,opcodes 。所有子目錄下默認值皆為"yes"。
--enable-targets=TARGET,TARGET,TARGET...
使其BFD在默認格式之外再支持多種其它平台的二進位文件格式,"all"表示所有已知平台。在32位系統上,即使使用"all"也只能支持所有32位目標,除非同時使用 --enable-64-bit-bfd 選項。由於目前 gas 並不能使用內置的默認平台之外的其它目標,因此這個選項沒什麼實際意義。
--enable-serial-[{host,target,build}-]configure
強製為 host, target, build 順序配置子包,如果使用"all"則表示所有子包。
--with-build-subdir=SUBDIR
為 build 在 SUBDIR 子目錄中進行配置(用於交叉編譯)
--with-target-subdir=SUBDIR
為 target 在 SUBDIR 子目錄中進行配置(用於交叉編譯)
--with-cross-host=HOST
用於配置交叉編譯器
--with-build-sysroot=sysroot
在編譯時將'sysroot'當作系統根目錄看待
--with-build-time-tools=path
在編譯過程中使用給定的 path 尋找 target tools
--with-newlib
Configuring with newlib
--with-lib-path=dir1:dir2...
指定不同於默認目錄的庫搜索路徑,這個工作也可以通過設置 Makefile 中的 LIB_PATH 變數值或使用這個選項完成。如果你想要做一個交叉連接器,那麼可能需要用 -l 指定不同於默認目錄的庫搜索路徑。
--enable-build-warnings
允許顯示編譯時的編譯器警告
--enable-werror
使用 -Werror 來將所有編譯器警告當作錯誤來看待。
--enable-dependency-tracking
啟用常規的依賴性追蹤(指的是Makefile規則),允許多次編譯。默認禁止依賴性追蹤,這樣可以加速一次性編譯。
--enable-maintainer-mode
啟用無用的 make 規則和依賴性(它們有時會導致混淆)
--disable-fast-install
禁止為快速安裝而進行優化。
--enable-bootstrap
本地編譯時默認打開,交叉編譯時默認關閉。建議不要明確指定,否則可能會出現配置錯誤。
--enable-cgen-maint=dir
編譯 cgen 相關的文件[主要用於GDB調試]。
--enable-libada
編譯 libada 目錄
--enable-libgcc-math
編譯 libgcc-math 目錄
--enable-libssp
編譯 libssp 目錄
--disable-libtool-lock
禁止 libtool 鎖定以加快編譯速度(可能會導致并行編譯的失敗)
--disable-nls
禁用本地語言支持(默認為啟用)。編譯時出現"undefined reference to 'libintl_gettext'"錯誤則必須禁用。
--enable-secureplt
默認創建只讀的 plt 項[建議不要明確設置]。
--with-mmap
使用 mmap 訪問文件,某些平台上速度較快,某些平台上速度較慢,某些平台上無法正常工作。建議不要明確指定。
--with-datarootdir
將 datarootdir 用作數據根目錄
--with-gnu-ld
明確告訴編譯器使用的連接器是 GNU ld ,默認為未指定。
--with-docdir
將文檔安裝在該目錄中
--with-htmldir
將html文檔安裝在該目錄中
--with-included-gettext
使用軟體包中自帶的 GNU gettext 庫
--with-gmp=PATH
指定 GMP 庫的安裝目錄
--with-gmp-dir=PATH
指定 GMP 庫的源代碼目錄
--with-mpfr=PATH
指定 MPFR 庫的安裝目錄
--with-mpfr-dir=PATH
指定 MPFR 庫的源代碼目錄
--x-includes=DIR
指定 X 的包含文件所在目錄
--x-libraries=DIR
指定 X 的庫文件所在目錄
--with-pic
--without-pic
試圖僅使用 PIC 或 non-PIC 對象,默認兩者都使用[建議不要明確指定]。

GCC 配置選項簡介(適用於4.0/4.1/4.2)

此部分是基於官方的GCC安裝指南的簡要描述,如果你想了解更詳細的信息請參考官方文檔。

推薦用一個新建的目錄來編譯GCC,而不是在源碼目錄中,這一點玩過LFS的兄弟都很熟悉了。另外,如果先前在編譯中出現了錯誤,推薦使用 make distclean 命令進行清理,然後重新運行 configure 腳本進行配置,再進行編譯。

下面將簡要介紹所有可用的配置選項。需要注意的是,不能使用"configure --help"查看GCC的配置選項,只能通過http://gcc.gnu.org/install/configure.html頁面查看。

每一個 --enable 選項都有一個對應的 --disable 選項,同樣,每一個 --with 選項也都用一個對應的 --without 選項。每一對選項中必有一個是默認值(依賴平台的不同而不同)。下面所列選項若未特別說明皆為非默認值。

--prefix
--exec-prefix
--bindir
--libdir
--libexecdir
--infodir
--datadir
--mandir
--program-prefix
--program-suffix
--program-transform-name
--host
--build
--target
--srcdir
--cache-file
--no-create
--silent
--version
這些選項的含義基本上通用於所有軟體包,這裡就不特別講解了。
--tmpdir=dir
指定用來保存臨時工作文件的目錄。
--with-slibdir=dir
共享庫 libgcc 的安裝目錄,默認等於 --libdir 的值。
--with-gxx-include-dir=dir
G++頭文件的安裝目錄,默認為 prefix/include/c++/版本 。
--with-local-prefix=dir
編譯程序用來查找安裝在本地的包含文件目錄的前綴,默認為 /usr/local 。只有在系統已經建立了某些特定的目錄規則,而不再是在 /usr/local/include 中查找本地安裝的頭文件的時候,該選項才使必須的。不能指定為 /usr ,也不能指定為包含系統標準頭文件的目錄,因為安裝的頭文件會和系統的頭文件混合,從而造成衝突,導致不能編譯某些程序。
--enable-shared[=package[,...]]
在支持共享庫的平台上編譯共享版本的庫,這是默認值。如果指定了庫名稱的列表則列表之外的庫將編譯為靜態版本。當前可用的庫名稱有:'libgcc', 'libstdc++', 'libffi', 'zlib', 'boehm-gc', 'ada', 'libada', 'libjava', 'libobjc'。另外,'libiberty'不支持作為共享庫。可以用 --disable-shared 指定僅僅編譯靜態庫。
--with-gnu-as
--with-gnu-ld
指定編譯器使用的彙編器為GNU彙編器/連接器,如何你實際使用的不是GNU彙編器/連接器,指定這個選項會引起混淆;另一方面如果你實際使用的是GNU彙編器/連接器,但是卻沒有指定這個選項,也有可能會造成混淆。
--with-as=pathname
--with-ld=pathname
指定編譯器使用的彙編器/連接器的位置。如果configure的默認查找過程找不到彙編器/連接器,就會需要該選項。或者系統中有多個彙編器/連接器,也需要它來指定使用哪一個。如果使用GNU的彙編器,那麼你就必須同時使用GNU連接器。
--with-stabs
指定編譯程序產生的調試信息為stabs格式,而不是宿主系統的默認格式。通常GCC產生的默認調試信息是ECOFF格式,但是它包含的調試信息沒有stabs多。
--disable-multilib
禁止編譯適用於多重目標體系的庫。
--enable-threads[=posix|aix|dce|gnat|mach|rtems|posix95|solaris|vxworks|win32|nks]
啟用線程支持,這是默認值。還可以進一步指定線程模型(不同平台支持的線程模型並不相同)。它對Obj-C的編譯器和庫以及C++,Java的異常處理有影響。
--enable-tls
指定目標系統支持TLS(線程本地存儲),一般情況下不需要明確指定這個選項,因為 configure 腳本可以自動檢測。僅在你認為檢測不正確的情況下才使用這個選項明確指定。
--with-cpu=cpu
指定將來調用 gcc 時 -mcpu 選項的默認值。
--with-schedule=cpu
指定將來調用 gcc 時 -mschedule 選項的默認值。
--with-arch=cpu
指定將來調用 gcc 時 -march 選項的默認值。
--with-tune=cpu
指定將來調用 gcc 時 -mtune 選項的默認值。
--with-abi=abi
指定將來調用 gcc 時 -mabi 選項的默認值。
--with-fpu=type
指定將來調用 gcc 時 -mfpu 選項的默認值。
--with-float=type
指定將來調用 gcc 時 -mhard-float 或 -msoft-float 選項的默認值。
--with-mode=mode
指定將來調用 gcc 時 -marm 或 -mthumb 選項的默認值。此選項僅支持 ARM 平台。
--with-divide=traps|breaks
指定編譯器如何處理除數為零的情況。此選項僅支持 MIPS 平台。
--enable-__cxa_atexit

好文,頂一下
(6)
85.7%
文章真差,踩一下
(1)
14.3%
------分隔線----------------------------
  • 上一篇:我也要低碳之:使用bash內部的字元串處理
  • 下一篇:Linux USB 滑鼠驅動程序詳解
  • 我要評論!
  • 收藏
  • 挑錯
  • 推薦
  • 列印

[火星人 ] Binutils與GCC配置選項簡介已經有422次圍觀

http://coctec.com/docs/program/show-post-71623.html