再想想交叉编译环境
最近开始尝试用 debootstrap 制作 Arm 开发板的文件系统,却意外发现——以前听说过,但是没想到这么简单——可以直接在 x86 Linux 上面模拟出一个 Arm/PowerPC 运行环境,通过 Debian 的基础支持,可以方便的安装软件,特别是 gcc 和第三方库。然后运行起来就像个高性能版的树莓派一样,可以说是一个很棒的 Arm 运行/编译环境——虽然可能还有很多坑没有踩到,但是到目前为止还是比较顺利的。
先说说基本流程:
- 首先安装
debootstrap
和qemu-user-static
(后面要用到),sudo apt-get install qemu qemu-user-static debootstrap
-
从 Debian 网站获取 base system,根据自己的需要选择 arch,
sudo debootstrap --arch=armhf --foreign sid armroot
-
中间应该会出现一次错误:
W: Failure trying to run: chroot yyy mount -t proc proc /proc W: See xxx for details
这时就需要将对应 arch 的
qemu-user-static
拷贝到 chroot 环境下:sudo cp /usr/bin/qemu-arm-static armboot/user/bin/
然后重新执行一遍步骤2 的命令就行了。
-
这些都完了之后就使用
chroot
切换到 Arm 环境,像使用 x86 Linux 一样使用这个 Arm Linux 环境吧:sudo chroot armboot
中间遇到了一些小问题:
-
执行步骤2 时可能会遇到下载失败的问题,可以自定义下载源,比如:
debootstrap --arch i386 sid rootfs-debian http://debian.linux.org.tw/debian
-
在步骤4 中,如果提示找不到 shell,可以自定义 shell,一般可以直接指定 bash:
sudo chroot armroot /bin/bash
到目前为止,我用过的交叉编译环境包括:
- 交叉编译器
- 直接在目标板上开发
- debootstrap 模拟目标板运行环境
然后对这三个方法进行了一个不靠谱的比较
交叉编译器 | 目标板 | chroot | |
---|---|---|---|
速度 | 5 | 3 | 5 |
易用 | 3 | 5 | 4 |
学习曲线 | 3 | 5 | 3 |
占有率 | 5 | 1 | 1 |
推荐度 | 5 | 3 | 3 |
装逼指数 | 1 | 5 | 3 |