环境准备
- PC:Ubuntu 16.04
- Soc:imx6ull
- Linux kernel:4.1.15
- toolchains:arm-linux-gnueabihf-gcc 4.9.4
- buildroot:2020.02.9 (点击下载)
1、编译
1.1 编译说明
参考buildroot官方说明文档docs/manual/manual.pdf的第4章Buildroot quick start,在编译时与内核或busybox的编译类似,都可以执行make menuconfig进行配置后执行make编译。另外在8.11章节中提及-jN多线程编译问题,指明了多线程编译buildroot是在2020年2月才开始的实验性支持,所以还是不推荐使用-jN编译,以免出现其他问题。
在编译buildroot过程中,有一部分内容就是下载源码,而且下载速度可能会稍微有点慢,不过可以通过编译时的网址提示信息去手动下载后放到dl目录下对应的路径中,然后重新编译。对于2020.02.9版本所需要的源码如下(点击下载):
buildroot-2020.02.9/dl/
├── acl
│ └── acl-2.2.53.tar.gz
├── attr
│ └── attr-2.4.48.tar.gz
├── autoconf
│ └── autoconf-2.69.tar.xz
├── automake
│ └── automake-1.15.1.tar.xz
├── busybox
│ └── busybox-1.31.1.tar.bz2
├── e2fsprogs
│ └── e2fsprogs-1.45.6.tar.xz
├── fakeroot
│ └── fakeroot_1.20.2.orig.tar.bz2
├── libtool
│ └── libtool-2.4.6.tar.xz
├── libzlib
│ └── zlib-1.2.11.tar.xz
├── m4
│ └── m4-1.4.18.tar.xz
├── patchelf
│ └── patchelf-0.9.tar.bz2
├── pkgconf
│ └── pkgconf-1.6.1.tar.xz
└── util-linux
└── util-linux-2.35.1.tar.xz
1.2 编译步骤
tar xjvf buildroot-2020.02.9.tar.bz2
cd buildroot-2020.02.9/
make menuconfig # 配置在后面
make
ls -l output/images/
IMX6ULL的menuconfig配置如下(也可以查看configs目录下是否已支持目标板进行参考):
Target options ---> # 根据目标板的CPU进行配置
Target Architecture (ARM (little endian)) --->
Target Binary Format (ELF) --->
Target Architecture Variant (cortex-A7) --->
Target ABI (EABIhf) --->
Floating point strategy (NEON/VFPv4) --->
ARM instruction set (ARM) --->
Toolchain ---> # 配置交叉编译工具链,一般使用自己的,以免下载太长时间等问题
Toolchain type (External toolchain) --->
Toolchain (Custom toolchain) --->
Toolchain origin (Pre-installed toolchain) --->
(/home/book/gcc-linaro-4.9.4_arm-linux-gnueabihf) Toolchain path
($(ARCH)-linux-gnueabihf) Toolchain prefix
External toolchain gcc version (4.9.x) --->
External toolchain kernel headers series (4.0.x) --->
External toolchain C library (glibc/eglibc) --->
[*] Toolchain has SSP support?
[*] Toolchain has RPC support?
[*] Toolchain has C++ support?
[*] Enable MMU support
System configuration ---> # 配置开机欢迎语和密码等
(buildroot) System hostname
(Welcome to Buildroot) System banner
[*] Enable root login with password
(123456) Root password
Kernel ---> # 一般不使用
[ ] Linux Kernel
Filesystem images ---> # 根据需要选择文件系统镜像类型
[*] ext2/3/4 root filesystem
ext2/3/4 variant (ext4) --->
Bootloaders ---> # 一般不使用
[ ] U-Boot
2、buildroot第三方支持
buildroot如果没有第三方程序和库的支持,那和busybox相比就不能彰显它的强大之处了。在buildroot中,根据实际的需求在make menuconfig时选中对应的功能,在编译的时候就会联网去下载相关源码来编译,免去了我们手动移植的步骤,相当方便。这些第三方支持的配置路径就在:Target packages —>
3、其他配置
3.1 修改环境变量“PS1”优化命令提示符
--- a/system/skeleton/etc/profile
+++ b/system/skeleton/etc/profile
@@ -8,6 +8,9 @@ if [ "$PS1" ]; then
fi
fi
+# It will display "user name", "host name" and "$/ #" (depending on whether you are root or not).
+export PS1='[\u@\h]:\w\$ '
+
export EDITOR='/bin/vi'
# Source configuration files from /etc/profile.d