一些cross compiler的心得

看板LinuxDev作者 (zxvc)時間17年前 (2007/04/08 01:14), 編輯推噓1(212)
留言5則, 4人參與, 最新討論串1/2 (看更多)
我算是業餘在研究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
有看有推 orz..我按錯了
04/09 21:24, 3F

04/22 02:44, , 4F
印象中binutils裝完後設一下PATH就可以了
04/22 02:44, 4F

06/14 22:57, , 5F
prefix不是指之後要安裝的位置嗎??怎麼會跟編譯錯誤有關?
06/14 22:57, 5F
文章代碼(AID): #165z5pyy (LinuxDev)
文章代碼(AID): #165z5pyy (LinuxDev)