uboot的编译原本以为是一件容易的事情,没想到,这一路下来真心让人纠结,今天就吧这一过程记录下来吧。折腾了好长时间。
必要环境
首先是arm-xilinx交叉变异开发环境,没有的话可以参考我之前的博客,有详细介绍。当然还有各种依赖等等,我这里就不会一一说了,反正第一次的话总会有很多错误,那么就仔细认证的理解错误,缺啥补啥就可以了。
开始
首先,去xilinx官方wiki网站上寻找u-boot-xilinx-master或者去digilent官网也有一个版本,都是可以其实都是一样的,其实digilent的github上关于u-boot是fork的xilinx的,所以都是一样的。
废话不多说,开始吧,首先解压,进入到子目录,有很多目录和文件,首先执行 make zynq_zc702_config,具体的选项可以查看doc目录下的一个README.zynq的文件,就知道了。
之后会出现
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
说明配置成功,你也可以使用 make config 命令进行更详细的配置。这里就不多说了
编译
之前看了很多的教程,都说直接运行就可以了,但是总会出现这样一个错误,说是没法找到 arm-xilinx-linux-gnueabigcc ,也就是我就纳闷了,我明明装了交叉编译工具啊,怎么回事,这个问题纠结了好半天,甚至怀疑官方的有问题,最后发现,我的电脑 上的关于交叉编译工具的环境变量是 arm-xilinx-linux-gcc
经过一番折腾,最后在make命令后边指定了交叉编译工具,
make CROSS_COMPILE=arm-xilinx-linux-gnueabi- 切记,最后不要加gcc,那个不用管。
好吧,终于解决了,可是编了半路,有一个问题,
In file included from tools/aisimage.c:10:0:
include/image.h:920:27: fatal error: openssl/evp.h: 没有那个文件或目录
# include <openssl/evp.h>
^
compilation terminated.
scripts/Makefile.host:111: recipe for target 'tools/aisimage.o' failed
make[1]: *** [tools/aisimage.o] Error 1
Makefile:1194: recipe for target 'tools' failed
make: *** [tools] Error 2
这个是openssl的依赖的问题,运行命令sudo apt-get install libssl-dev 即可解决。
好吧再来一次,这回貌似没有什么问题,好长时间过去了,我还盲目兴奋了一会儿,突然又有一个问题:
./scripts/dtc-version.sh: 行 17: dtc: 未找到命令
./scripts/dtc-version.sh: 行 18: dtc: 未找到命令
*** Your dtc is too old, please upgrade to dtc 1.4 or newer
Makefile:1353: recipe for target 'checkdtc' failed
make: *** [checkdtc] Error 1
好吧,,dtc是device-tree-compiler的缩写,即设备树编译器,说明系统中没有安装这个编译器
安装不就行了:
sudo apt-get install device-tree-compiler
这次一次性编译到底了。
ps :个人感受,编译u-boot之前建议了解一下gcc编译器和makefile语法相关的概念,这样出了问题可以自己找问题,任何人的linux系统是不同的,所以呢就算完全按照我的过程走下来,不一定就会成功。还有,就是出了问题要冷静,不要想着有个人帮你解决问题,要多思考,多查资料,还要有耐心,一周两周解决不掉是很正常的,如果暂时解决不了可以搁置一下。
Good Luck!

本文记录了zedboard上u-boot编译过程中的挑战,包括环境配置、源码获取、配置与编译阶段遇到的问题及解决方法。如找不到arm-xilinx-linux-gnueabigcc、openssl依赖和dtc编译器缺失等,强调了解gcc和makefile的重要性,以及面对问题时的解决态度和策略。
463

被折叠的 条评论
为什么被折叠?



