作者zxvc (zxvc)
看板LinuxDev
標題一些cross compiler的心得
時間Sun Apr 8 01:14:24 2007
我算是業餘在研究cross compiler的人,
我覺得研究這些東西雖然有時後滿難的,但試成功了就滿有成就感的.
在這裡分享一下我的一些寶貴經驗,以便後來的新手不必走許多冤枉路:
如果你在編GCC時出現類似這個錯誤:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/user/gcc-build/gcc/xgcc
-B/home/user/gcc-build/gcc/
-B/usr/arm/badpath/arm-unknown-linux-gnu/bin/
-B/usr/arm/badpath/arm-unknown-linux-gnu/lib/
-isystem /usr/arm/badpath/arm-unknown-linux-gnu/include
/tmp/ccJfUj2U.s: Assembler messages:
...
make[1]: *** [crtbegin.o] Error 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
這是因為你在./configure的時後所下的參數會導致
組譯過程會去找$prefix/$target/bin底下的ld, as, ...的binutils來用.
若$prefix/$target/bin找不到binutils,就會使用你目前系統上的binutils來用.
如果你系統上的binutils是for x86,
那麼它便不會認得for non-x86(例如ARM)的instruction,導致assemble錯誤.
所以解決的方法就是請你檢查gcc的./configure的--prefix與--target設定,
是否在$prefix/$target/bin確實是放置著cross binutils.
例如上述範例
--prefix=/usr/arm/badpath --target=arm-unknown-linux-gnu
如果cross binutils裝在/usr/arm/arm-unknown-linux-gnu/bin,
那麼prefix便要修正為:
--prefix=/usr/arm --target=arm-unknown-linux-gnu
參考資料:
http://sourceware.org/ml/crossgcc/2002-01/msg00074.html
改天有空再講cross gcc + uClibc shared library + skyeye的經驗.
--
Albert Einstein :
If there is any religion that could cope with modern scientific needs it
would be Buddhism.
《金剛經》一切有為法 如夢幻泡影 如露亦如電 應作如是觀
http://web.cc.ncu.edu.tw/~93501025/jg.doc
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.200.121
※ 編輯: zxvc 來自: 140.115.200.121 (04/08 01:14)
※ 編輯: zxvc 來自: 140.115.200.121 (04/08 01:15)
推 cobrasgo:有看有推 04/08 15:39
噓 qrtt1:有看有推 04/09 21:23
推 qrtt1:有看有推 orz..我按錯了 04/09 21:24
→ letoh:印象中binutils裝完後設一下PATH就可以了 04/22 02:44
→ prudent:prefix不是指之後要安裝的位置嗎??怎麼會跟編譯錯誤有關? 06/14 22:57