我想求助一下用GCC实现MIPS交叉编译的全过程(从编译binutils开始到重新编译GCC,再到如何实现交叉编译)

sucuiqin   2007-10-2 15:25 楼主
如题,麻烦大家指导下,我是GCC和MIPS的初学者,还望大家不吝赐教:)谢谢您!

回复评论 (4)

不需要这么麻烦,很简单的.
首先你去
http://www.uclibc.org/
下载一个buildroot,这是个工具集,你接下来所要做的事情就是把gcc、binutils等文件下载下来,放在buildroot下的dl目录下
当然,你也可以让buildroot自动下载,不过速度较慢。
选择目标的为MIPS,以及一些工具的版本,顺利的话,你编译完后就能得到MIPS的gcc交叉编译器了。还包括文件系统(busybox),n多的可选应用程序(sqlite等)。
点赞  2007-10-3 09:19
###
# setenv
###
unset LD_LIBRARY_PATH

test "$SHELL" = "/bin/csh" \
        && setenv PROJECT at91dev \
        || export PROJECT=at91dev

test "$SHELL" = "/bin/csh" \
        && setenv PRJROOT /at91dev \
        || export PRJROOT=/at91dev

test "$SHELL" = "/bin/csh" \
        && setenv ARCH arm \
        || export ARCH=arm

test "$SHELL" = "/bin/csh" \
        && setenv TARGET arm-linux-uclibc \
        || export TARGET=arm-linux-uclibc

test "$SHELL" = "/bin/csh" \
        && setenv TOOLSDIR /buildroot/build_arm/staging_dir \
        || export TOOLSDIR=/buildroot/build_arm/staging_dir

test "$SHELL" = "/bin/csh" \
        && setenv PATH /at91dev/buildroot/build_arm/staging_dir/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/admin/bin \
        || export PATH=/at91dev/buildroot/build_arm/staging_dir/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/admin/bin

test "$SHELL" = "/bin/csh" \
        && setenv CROSS_COMPILE arm-linux-uclibc- \
        || export CROSS_COMPILE=arm-linux-uclibc-

贴一个我用编译后的ARM的gcc交叉编译器的环境变量设置,你也可以参考一下
点赞  2007-10-3 09:21
楼上的兄弟,我在make buildroot时遇到了问题,如下:

dirk@dirk-laptop:~/buildroot$ make menuconfig
make CC="/usr/bin/gcc" -C package/config conf mconf
make[1]: Entering directory `/home/dirk/buildroot/package/config'
/usr/bin/gcc -DCURSES_LOC="" -DLOCALE -g -O2  -c lxdialog/checklist.c -o lxdialog/checklist.o
In file included from lxdialog/checklist.c:24:
lxdialog/dialog.h:32:20: error: curses.h: No such file or directory
In file included from lxdialog/checklist.c:24:
lxdialog/dialog.h:97: error: expected specifier-qualifier-list before ‘chtype’
lxdialog/dialog.h:187: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:194: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:196: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:197: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:198: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:199: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:201: error: expected ‘)’ before ‘*’ token
lxdialog/checklist.c:31: error: expected ‘)’ before ‘*’ token
lxdialog/checklist.c:59: error: expected ‘)’ before ‘*’ token
lxdialog/checklist.c:95: error: expected ‘)’ before ‘*’ token
lxdialog/checklist.c: In function ‘dialog_checklist’:
lxdialog/checklist.c:116: error: ‘WINDOW’ undeclared (first use in this function)
lxdialog/checklist.c:116: error: (Each undeclared identifier is reported only once
lxdialog/checklist.c:116: error: for each function it appears in.)
lxdialog/checklist.c:116: error: ‘dialog’ undeclared (first use in this function)
lxdialog/checklist.c:116: error: ‘list’ undeclared (first use in this function)
lxdialog/checklist.c:129: error: ‘stdscr’ undeclared (first use in this function)
lxdialog/checklist.c:130: error: ‘KEY_MAX’ undeclared (first use in this function)
lxdialog/checklist.c:137: error: ‘COLS’ undeclared (first use in this function)
lxdialog/checklist.c:138: error: ‘LINES’ undeclared (first use in this function)
lxdialog/checklist.c:143: error: ‘TRUE’ undeclared (first use in this function)
lxdialog/checklist.c:146: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:146: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:147: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:151: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:156: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:171: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:171: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:210: error: ‘KEY_UP’ undeclared (first use in this function)
lxdialog/checklist.c:210: error: ‘KEY_DOWN’ undeclared (first use in this function)
lxdialog/checklist.c:220: error: ‘FALSE’ undeclared (first use in this function)
lxdialog/checklist.c:297: error: ‘KEY_LEFT’ undeclared (first use in this function)
lxdialog/checklist.c:298: error: ‘KEY_RIGHT’ undeclared (first use in this function)
lxdialog/checklist.c:312: error: ‘KEY_RESIZE’ undeclared (first use in this function)
make[1]: *** [lxdialog/checklist.o] Error 1
make[1]: Leaving directory `/home/dirk/buildroot/package/config'
make: *** [package/config/mconf] Error 2
dirk@dirk-laptop:~/buildroot$ sudo make menuconfig
make CC="/usr/bin/gcc" -C package/config conf mconf
make[1]: Entering directory `/home/dirk/buildroot/package/config'
/usr/bin/gcc -DCURSES_LOC="" -DLOCALE -g -O2  -c lxdialog/checklist.c -o lxdialog/checklist.o
In file included from lxdialog/checklist.c:24:
lxdialog/dialog.h:32:20: error: curses.h: No such file or directory
In file included from lxdialog/checklist.c:24:
lxdialog/dialog.h:97: error: expected specifier-qualifier-list before ‘chtype’
lxdialog/dialog.h:187: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:194: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:196: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:197: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:198: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:199: error: expected ‘)’ before ‘*’ token
lxdialog/dialog.h:201: error: expected ‘)’ before ‘*’ token
lxdialog/checklist.c:31: error: expected ‘)’ before ‘*’ token
lxdialog/checklist.c:59: error: expected ‘)’ before ‘*’ token
lxdialog/checklist.c:95: error: expected ‘)’ before ‘*’ token
lxdialog/checklist.c: In function ‘dialog_checklist’:
lxdialog/checklist.c:116: error: ‘WINDOW’ undeclared (first use in this function)
lxdialog/checklist.c:116: error: (Each undeclared identifier is reported only once
lxdialog/checklist.c:116: error: for each function it appears in.)
lxdialog/checklist.c:116: error: ‘dialog’ undeclared (first use in this function)
lxdialog/checklist.c:116: error: ‘list’ undeclared (first use in this function)
lxdialog/checklist.c:129: error: ‘stdscr’ undeclared (first use in this function)
lxdialog/checklist.c:130: error: ‘KEY_MAX’ undeclared (first use in this function)
lxdialog/checklist.c:137: error: ‘COLS’ undeclared (first use in this function)
lxdialog/checklist.c:138: error: ‘LINES’ undeclared (first use in this function)
lxdialog/checklist.c:143: error: ‘TRUE’ undeclared (first use in this function)
lxdialog/checklist.c:146: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:146: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:147: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:151: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:156: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:171: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:171: error: ‘struct dialog_color’ has no member named ‘atr’
lxdialog/checklist.c:210: error: ‘KEY_UP’ undeclared (first use in this function)
lxdialog/checklist.c:210: error: ‘KEY_DOWN’ undeclared (first use in this function)
lxdialog/checklist.c:220: error: ‘FALSE’ undeclared (first use in this function)
lxdialog/checklist.c:297: error: ‘KEY_LEFT’ undeclared (first use in this function)
lxdialog/checklist.c:298: error: ‘KEY_RIGHT’ undeclared (first use in this function)
lxdialog/checklist.c:312: error: ‘KEY_RESIZE’ undeclared (first use in this function)
make[1]: *** [lxdialog/checklist.o] Error 1
make[1]: Leaving directory `/home/dirk/buildroot/package/config'
make: *** [package/config/mconf] Error 2

怎么解决呢?
点赞  2007-10-4 13:25
DirkNowitzki ,你好!你是下了最新的快照的版本吗?这个可能会有点危险,我就载过快照,老外居然还没完成,所以一堆错误。
你可以试着下比较前面点的快照版本,或者用svn co去下载。如果不行的话,加我msn或者qq,我给你发过去。
buildroot不需要sudo。
另外,检测一下你的gcc是否正确,输入gcc --version看看

[fc@fcdev buildroot]$ gcc --version
gcc (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
点赞  2007-10-7 13:54
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复