作者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)
1F:推 cobrasgo:有看有推 04/08 15:39
2F:嘘 qrtt1:有看有推 04/09 21:23
3F:推 qrtt1:有看有推 orz..我按错了 04/09 21:24
4F:→ letoh:印象中binutils装完後设一下PATH就可以了 04/22 02:44
5F:→ prudent:prefix不是指之後要安装的位置吗??怎麽会跟编译错误有关? 06/14 22:57