昨天搭建了环境,尝试编译华清远见修改好的UBoot,结果编译中出错,看提示感觉是浮点功能出了问题,所以今天我换一个编译工具链,不用硬浮点功能,用软实现的浮点,看看有没有问题。
这次我换了gcc-arm-8.2-2018.11-x86_64-arm-linux-gnueabi,大家可以通过Linaro的官网定位到GNU Toolchain的发布页面去下载到,下载下来后,解压缩到Ubuntu里面备用。
1)再次修改UBoot的顶层Makefile,使用新的交叉编译工具链
因为我没有将这个工具链的路径加入PATH环境变量,所以指定了全路径。
2)再次执行 ./build.sh ,尝试编译UBoot,好吧,这下子错误看起来更严重了,提示说没有 linux/compiler-gcc8.h 这个文件。
没办法,只能先百度一下了,感觉走上了一条不归路。
3)百度了 “linux/compiler-gcc8.h: 没有那个文件或目录” 这段话,都说是linux的内核版本较低,和编译器的版本不匹配造成的,然后我用 ./arm-linux-gnueabi-gcc --version 查了一下交叉编译器的版本,发现是8的。
然后到提示的include/linux目录下面看了一下,确实没有compiler-gcc8.h,只有compiler-gcc3.h和compiler-gcc4.h。
所以,我猜想很大概率还是工具链版本太高了的缘故,应该用3或者4的。可是这么低版本的工具链,应该很难找到了吧,我看GNU Toolchain的发布页面,最早的也是2018年的了,也只能找找看了。
4)实在找不到了,应该是华清远见这个教程太老了,用的内核也太老了,就只能用他们资料里提供的工具链试一下了。复制到Ubuntu下解压后,运行 ./arm-none-linux-gnueabi-gcc --version 看一下版本,确实是4的。
5)再次修改UBoot顶层Makefile,重新指定交叉编译工具链。
6)执行 ./build.sh ,尝试编译UBoot,结果继续报错。
但是版本应该是没有问题了,接着干,干死。
7)到这里,我重新参考了一下华清远见的《FS4412使用手册》,发现他的截图上面的交叉编译工具跟我的不一样,它上面设置的是 arm-cortex_a8-linux-gnueabi- ,但是他网盘里提供的又是 gcc-4.6.4 ,不得不说这资料真的是疏于维护,对都对不上。
好了,头都大了,感觉这是自己给自己找的大型翻车现场,今天就到这里吧。