一些cross compiler的心得
我算是業餘在研究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)
推
04/08 15:39, , 1F
04/08 15:39, 1F
噓
04/09 21:23, , 2F
04/09 21:23, 2F
推
04/09 21:24, , 3F
04/09 21:24, 3F
→
04/22 02:44, , 4F
04/22 02:44, 4F
→
06/14 22:57, , 5F
06/14 22:57, 5F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章