unboot压缩包解压(.tar.xz)
在终端进入解压目录
xz -d ./.tar.xz
tar -xvf ./.tar
向Makefile添加编译路径
在makefile的开头添加本机的编译路径
ARCH=arm
CROSS_COMPILE=/opt/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-
第一句表示变为arm,第二句表示交叉编译的编译器路径(自己交叉编译的安装路径)
网上给出了三种情况如下:
一、arm-none-linux-gnueabi-gcc不能再64位系统下下编译ARM的32位库的问题解决方法如下:
sudo apt-get install libgl1-mesa-dri:i386
sudo apt-get install ia32-libs-multiarch:i386
sudo apt-get install ia32-libs-multiarch
apt-get update
sudo apt-get install ia32-libs
二、交叉编译工具没有写入环境变量或写错,重新写入环境变量
将交叉编译工具 bin 目录添加到系统 PATH 环境变量中:
export PATH=$PATH:/opt/fsl-linaro-toolchain/bin
也可修改~/.bashrc 文件, 按如下方式在 PATH 变量中增加交叉编译工具链的安装路径,然后运行/.bashrc 文件或者重启系统,使设置生效。
三、/bin/bash缺少arm-none-linux-gnueabi-gcc链接符,向其建立链接如下:
sudo ln -s /opt/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc /usr/bin/arm-none-linux-gnueabi-gcc
(sudo ln -s 源目录 /usr/bin/链接名)
注:除了arm-none-linux-gnueabi-gcc,其他的遇到同样错误一样使用链接如我的链接如下的链接:
sudo ln -s /opt/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc /usr/bin/arm-none-linux-gnueabi-gcc
sudo ln -s /opt/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-ar /usr/bin/arm-none-linux-gnueabi-ar
sudo ln -s /opt/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-ld /usr/bin/arm-none-linux-gnueabi-ld
sudo ln -s /opt/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-objdump /usr/bin/arm-none-linux-gnueabi-objdump
sudo ln -s /opt/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-objcopy /usr/bin/arm-none-linux-gnueabi-objcopy
sudo ln -s /opt/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-nm /usr/bin/arm-none-linux-gnueabi-nm
编译的其他问题
当以上三个设置都仍然出现错误,出现 hello_world.srec 的错误编译失败,首先进入该编译的编译路径(一般为出现错误时,编译器进去的文件目录),修改
sudo gedir Makefile
(不是主目录的makefile,我的在uboot-imx/examples/standalone下)
将原文件的include $(TOPDIR)/config.mk下开始的内容:
ELF = hello_world
SREC = hello_world.srec
BIN = hello_world.bin
改为
ELF = hello_world
SREC = hello_world.o
BIN = hello_world.o hello_world
重新编译后成功如下图