问题背景
这个问题是楼主在做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
编译完成之后,再uboot-1.1.6目录下会生成u-boot.bin文件,该文件就是烧录到开发板nandflash上的u-boot二进制文件:
OK,问题得到解决了!!!