Linux移植到自己的开发板(四)问题汇总
@
1 使ubuntu支持两个版本的编译链:
/etc/environment改为如下,重启生效后,
当我们指定CROSS_COMPILE=arm-none-linux-gnueabi-
,系统肯定会用4.3.2的编译器;
当我们指定CROSS_COMPILE=arm-linux-时,两个版本都支持,用哪个估计和环境变量设置的顺序有关,所以我使用arm-linux-时都加上绝对路径:CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-
,这样就明确知道用的哪个编译器了。
echo $PATH
/usr/local/arm/4.3.2/bin:/work/tools/gcc-3.4.5-glibc-2.3.6/bin/
2 版本问题:
使用3.4.5编译链时,CROSS_COMPILE设置为:arm-linux-
使用4.3.2、4.4.3编译链时,CROSS_COMPILE最好设置为:arm-none-linux-gnueabi-
uboot2010.03
3.4.5、4.3.2编译出来的都ok,**4.4.3编译出来的网络ping不通 **;
Linux2.6
3.4.5、4.3.2、4.4.3编译出来的都ok;
4.3.2、4.4.3等高版本编译器编译时必须在menuconfig中选中如下项,不然挂载根文件系统后,有输入和输出回显,但是进不了文件系统命令行!
Kernel Features --->
[※] Use the ARM EABI to compile the kernel
[※] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
Linux4.14
得用高版本的编译器,例如4.4.3的
busybox1.7.0 //3.4.5、4.3.2、4.4.3编译出来的都ok;
busybox1.20.2 //3.4.5、4.3.2、4.4.3编译出来的都ok;
busybox1.33.1 //4.3.2、4.4.3编译出来的都ok;
使用3.4.5时,拷贝动态链接库:
cp xxx/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/*.so* /home/test/rootfs/lib –d
使用4.3.2时,拷贝动态链接库:
cp xxx/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*.so* /home/test/rootfs/lib –d
使用4.4.3(4.5.1)时,拷贝动态链接库:
cp xxx/4.4.3/arm-none-linux-gnueabi/lib/*.so* /home/test/rootfs/lib –d
UBOOT、kernel、busybox用不同版本的编译链编出来的没关系,可以运行。
例如3.4.5编译uboot、4.3.2编译kernel、3.4.5编译busybox,组合起来可以运行。
busybox和rootfs使用的动态库需要同一个版本的编译器。
3 ubuntu版本的vscode下载网速太慢:
首先去vscode官网下载适合ubuntu的deb文件,弹出下载框如下;
复制下载网址,将/stable前换成 vscode.cdn.azure.cn
就可以快速下载。
4 ubuntu占用空间过大
使用df -hl
可以查看是哪个文件夹过大,去对应文件夹进行文件清理;
如果用命令查看ubuntu实际占用内存
不大,但其镜像文件vmdk占用却很大
,那么需要进行磁盘清理:进入ubuntu虚拟机,执行
sudo vmware-toolbox-cmd disk shrink /
最终vmdk占用空间和实际的就一致了。
磁盘清理期间我遇到问题
未能压缩“......vmdk”: 文件系统的空间不足,无法执行选定的操作。
原因是假如你的虚拟机占用了100G,执行shrink 指令时需要临时再占用大约100G, 即总共需要磁盘约200G剩余空间才能正确执行。所以必须得把磁盘空间留出这么多,才能执行以上指令。
5 执行make zImage 出错 lzop: not found
找关键词 error或者/bin/sh . :not found定位问题原因
比如提示 /bin/sh: 1: lzop: not found
则安装:
sudo apt install lzop
如果上一步执行时又提示
E: Unmet dependencies. Try ‘apt --fix-broken install’ with no packages (or specify a solution).
那么执行以下命令:
sudo apt-get --fix-broken install
6 make busybox报错:
使用arm-linux-gcc3.4.5编译busybox1.20.2时报错如下:
miscutils/nandwrite.c:49:26: mtd/mtd-user.h: No such file or directory
参考网友解决方案:
cp /usr/include/mtd/ ./include/mtd/ -a