萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Binutils的調整過程和Gcc的調整過程

Binutils的調整過程和Gcc的調整過程

  Binutils的調整過程

  要想能調整binutils必須自己編譯一個ld命令,ld是個鏈接器,是整個編譯過程中最後一步要執行的命令,要根據庫生成程序文件。

  以lfs中的為例:

  ../binutils-2.20/configure --prefix=/tools --disable-nls --with-lib-path=/tools/lib

  make

  make install

  make -C ld clean

  make -C ld LIB_PATH=/usr/lib:/lib

  cp -v ld/ld-new /tools/bin

  這個過程會把binutils安裝在/tools目錄下,並生成一個ld-new放到/tools/bin下。

  這個過程會生成兩個ld,ld和ld-new。這兩個ld的不同這處在於它們的搜索路徑不同。

  ld的搜索路徑為/tools/lib,在configure時用--with-lib-path=/tools/lib設置。

  ld-newr的搜索路徑為/usr/lib:/lib,在重新生成ld時用LIB_PATH=/usr/lib:/lib設置。

  這樣只要把這兩個ld保存好,到時想依賴哪個glibc就用對應ld就行了,不要告訴我你不知道用哪個喲。

  Gcc的調整過程

  gcc –dumpspecs會輸出gcc的現有配制。Sed是個行正則處理工具,把輸出的配制中的某些字符串統一替換。

  gcc -dumpspecs | sed \

  -e 's@/lib\(64\)\?/ld@/tools&@g' \

  -e "/^\*cpp:$/{n;s,$, -isystem /tools/include,}" \

  > $(dirname $($LFS_TGT-gcc -print-libgcc-file-name))/specs

  上面的過程大致為gcc輸出配制給sed,sed替換後輸出到specs文件。

  $(dirname $($LFS_TGT-gcc -print-libgcc-file-name))為specs應該在的路徑。

copyright © 萬盛學電腦網 all rights reserved