问题背景
这个问题是楼主在做OK6410开发板Android系统boot编译的时候遇到的。当时按照教程文档安装好Ubuntu-amd-64和配套交叉编译器之后,进行make编译u-boot,直接报如下错误:
/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc:命令未找到
解决方法
1 常规解决方法
类似这种问题,常见的原因有以下两种:
1.Ubuntu系统交叉编译器的环境变量配置不对导致的;
2.Makefile的交叉编译器路径设置不对;
对于第一种原因,只要在Ubuntu系统中增加环境变量export PATH=$PATH:/usr/local/arm/4.3.2/bin,然后make clean以下,重新make就可以;
对于第二种原因,一般都是Makefile中的CROSS_COMPILE路径不对导致的。将CROSS_COMPILE = /usr/local/arm/4.3.2/bin/arm-linux-gcc,修改为CROSS_COMPILE = /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-既可以解决问题;
但是!!!他妈的,但是!!!楼主就遇到了一个奇葩的问题,按照上述两种方法尝试还是未能解决问题!报同样的错误:
/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc:命令未找到!!!那个是让我气得啊,琢磨了半天都不知道原因在哪里!!!后来,在楼主的不懈坚持下,终于找到原因所在:
很多arm-linux-gcc编译器都是针对32位的linux系统,由于安卓系统编译需要64位的Ubuntu系统,所以会报这个错误!!!
2 Ubuntu 64位系统arm-linux-gcc库缺失原因导致
后来经过楼主百度才得知:很多arm-linux-gcc编译器都是针对32位操作系统的,所以Ubuntu 64位操作系统需要安装一个叫“ia32-libs”的库,OK,问题得到解决了!具体解决步骤如下:
/forlinx/uboot1.1.6$ sudo apt-get install ia32-libs
然后make clean,重新编译Android u-boot:
/forlinx/uboot1.1.6$ make clean
/forlinx/uboot1.1.6$ make forlinx_nand_ram256_config
/forlinx/uboot1.1.6$ make
![](https://i-blog.csdnimg.cn/blog_migrate/692c721b225ba6fc92e584c327e0330f.png)
OK,问题得到解决了!!!