【问题】
折腾:
【记录】Ubuntu下基于Eclipse去调用Makefile交叉编译Uboot
期间,编译出错:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 22:21:49 **** Build of configuration Default for project HART-IP **** make all make [1]: arm-xscale-linux-gnueabi-gcc: Command not found make [1]: Entering directory ` /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /tools ' ln -s .. /common/environment .c environment.c ln -s .. /lib_generic/crc32 .c crc32.c gcc -M -Wall -pedantic -idirafter .. /include -DTEXT_BASE=0x5c010000 -DUSE_HOSTCC environment.c img2srec.c mkimage.c crc32.c envcrc.c gen_eth_addr.c bmp_logo.c > .depend make [1]: Leaving directory ` /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /tools ' make [1]: arm-xscale-linux-gnueabi-gcc: Command not found make [1]: Entering directory ` /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /tools ' make [1]: `.depend' is up to date . make [1]: Leaving directory ` /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /tools ' make [1]: arm-xscale-linux-gnueabi-gcc: Command not found arm-xscale-linux-gnueabi-gcc -M -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -D__KERNEL__ -DTEXT_BASE=0x5c010000 -I /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /include -fno- builtin -ffreestanding -nostdinc -isystem -pipe -DCONFIG_ARM -D__ARM__ -march=armv5 -mtune=xscale -Wall -Wstrict-prototypes cache_8xx.S cache.c codec.c cpu.c dsp.c ether.c i2c.c memory.c post.c rtc.c spr.c sysmon.c tests.c uart.c usb.c watchdog.c > .depend make [1]: Entering directory ` /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /post ' /bin/sh : 1: arm-xscale-linux-gnueabi-gcc: not found make [1]: *** No rule to make target `.depend'. Stop. make [1]: arm-xscale-linux-gnueabi-gcc: Command not found make [1]: Entering directory ` /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /post/cpu ' /bin/sh : 1: arm-xscale-linux-gnueabi-gcc: not found make [1]: *** No rule to make target `.depend'. Stop. make [1]: Leaving directory ` /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /post ' arm-xscale-linux-gnueabi-gcc -M -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -D__KERNEL__ -DTEXT_BASE=0x5c010000 -I /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /include -fno- builtin -ffreestanding -nostdinc -isystem -pipe -DCONFIG_ARM -D__ARM__ -march=armv5 -mtune=xscale -Wall -Wstrict-prototypes asm.S cmp .c cmpi.c two.c twox.c three.c threex.c threei.c andi.c srawi.c rlwnm.c rlwinm.c rlwimi.c store.c load.c cr.c b.c multi.c string.c complex.c > .depend make : *** [depend] Error 2 make [1]: Leaving directory ` /home/crifan/develop/eclipse/workspace_root/HART-IP/BSP/Bootloader/u-boot-1 .1.4-whgs /post/cpu ' 22:21:50 Build Finished (took 878ms) |
如图:
【解决过程】
1.此处,觉得有点奇怪的是,之前也是在Eclipse中,编译别的类似的项目:
【记录】Ubuntu下使用Eclipse编译一个基于makefile的C项目
为何却可以找到交叉编译器arm-xscale-linux-gnueabi呢?
2.然后后来才发现,原来之前的项目的makefile中,手动加入了交叉编译器的路径:
所以人家可以找到。而此处uboot中,没有包含对应路径,所以找不到。
3.所以,要把对应的,交叉编译器的路径:
/home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin
加到当前项目的路径中:
然后再去编译试试,结果还是找不到。
4.然后去把整个项目去index->rebuild一下,再去试试,结果还是不行。
5.重启关闭Eclipse,重启一下,再试试,结果问题依旧。
6.后来想起来,貌似需要:
设置交叉编译器的时候,给定绝对路径
或者是:
要把上面的路径,加到Eclipse中的PATH中,才可以?
所以,先去试试后者:
然后等待index重新build:
然后再去编译试试是否可以,结果问题依旧。
7.只好再去试试,把交叉编译器,改为带绝对路径的。
先去得到路径:
1 2 3 4 5 6 7 8 9 10 11 | crifan@ubuntu:u-boot-1.1.4-whgs$ cd - /home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin crifan@ubuntu:bin$ /home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin/arm-xscale-linux-gnueabi-gcc --version arm-xscale-linux-gnueabi-gcc (crosstool-NG 1.18.0) 4.6.0 Copyright (C) 2011 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. crifan@ubuntu:bin$ which /home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin/arm-xscale-linux-gnueabi-gcc /home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin/arm-xscale-linux-gnueabi-gcc crifan@ubuntu:bin$ |
即:
/home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin/arm-xscale-linux-gnueabi-gcc
换到uboot的makefile中:
1 2 3 | #CROSS_COMPILE = arm-xscale-linux-gnu- #CROSS_COMPILE = arm-xscale-linux-gnueabi- CROSS_COMPILE = /home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin/arm-xscale-linux-gnueabi-gcc |
如图:
然后再去编译试试,最后终于可以去编译了:
8.后来,想起来了,其交叉编译器的路径,是另外在opt下面也有的,所以改为:
1 2 3 4 | #CROSS_COMPILE = arm-xscale-linux-gnu- #CROSS_COMPILE = arm-xscale-linux-gnueabi- #CROSS_COMPILE = /home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin/arm-xscale-linux-gnueabi- CROSS_COMPILE = /opt/crosscompile/xscale/gcc-4 .6.0-glibc-2.9 /bin/arm-xscale-linux-gnueabi- |
【总结】
Ubuntu下的Eclipse中,交叉编译Uboot,在把交叉编译器,从:
1 | CROSS_COMPILE = arm-xscale-linux-gnu- |
改为当前自己的交叉编译器:
1 | CROSS_COMPILE = arm-xscale-linux-gnueabi- |
后,结果出错:
make[1]: arm-xscale-linux-gnueabi-gcc: Command not found |
原因是:
Eclipse中,没加合适的路径,找不到交叉编译器。
注:
此处,是在.bashrc中修改了PATH的,确保已经加了此xscale的交叉编译器的:
1 2 3 4 5 6 | #PATH=/opt/crosstool-ng/bin:$PATH #PATH=/opt/crosstool-ng/bin:$HOME/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin:$PATH #PATH=/opt/crosstool-ng/bin:/opt/crosscompile/xscale/gcc-4.6.0-glibc-2.9/bin:$PATH #PATH=$PATH:/opt/crosstool-ng/bin:/opt/crosscompile/xscale/gcc-4.6.0-glibc-2.9/bin:/opt/crosscompile/curl/bin #PATH=$PATH:/opt/crosstool-ng/bin:/opt/crosscompile/xscale/gcc-4.6.0-glibc-2.9/bin:/opt/crosscompile/curl/bin:/opt/crosscompile/pcre/bin PATH=$PATH: /opt/crosstool-ng/bin : /opt/crosscompile/xscale/gcc-4 .6.0-glibc-2.9 /bin : /opt/crosscompile/curl/bin : /opt/crosscompile/pcre/bin : /usr/lib/jvm/java-1 .7.0-openjdk-i386/ |
但是其针对于此处的Eclipse,是无效的。
而且,即使是在Eclipse去添加Symbol:
PATH=${PATH}:/home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin
(此处是另外一个路径:/opt/crosscompile/xscale/gcc-4.6.0-glibc-2.9/bin,也是同样的效果)
也还是找不到。
最后只能是:
在Makefile中,修改交叉编译器的时候,直接是改为带绝对路径的:
1 2 3 4 | #CROSS_COMPILE = arm-xscale-linux-gnu- #CROSS_COMPILE = arm-xscale-linux-gnueabi- #CROSS_COMPILE = /home/crifan/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/bin/arm-xscale-linux-gnueabi- CROSS_COMPILE = /opt/crosscompile/xscale/gcc-4 .6.0-glibc-2.9 /bin/arm-xscale-linux-gnueabi- |
才可以正常的找到交叉编译器。
转载请注明:在路上 » 【已解决】Ubuntu下Eclipse中交叉编译Uboot出错:make[1]: arm-xscale-linux-gnueabi-gcc: Command not found