2. 添加软件包¶
在前面Buildroot根文件系统的构建章节仅仅构建出最基础的文件系统,没有额外添加的软件包,本章节将介绍如何添加一些常用软件包。
在Buildroot根目录执行以下命令,打开界面:
1 2 3 4 5 6 7 8 9 | #加载自己的配置文件
make imx6ullfire_defconfig
#打开界面
make menuconfig
#保存退出后生成精简配置文件,默认会覆盖imx6ullfire_defconfig
make savedefconfig
|
在图像界面输入”/”,可以打开搜索框,输入软件包的配置项可以快速找到对应位置。
提示
以下软件包如有需要可自行添加,不需要可忽略。
2.1. 网络相关软件包¶
2.1.1. 远程连接与文件传输¶
OpenSSH
提供安全的远程登录(SSH)、文件传输(SCP、SFTP)等功能,过加密通道进行通信,保证数据传输的安全性。
1 | BR2_PACKAGE_OPENSSH=y
|
rsync
用于在不同主机之间高效地同步文件和目录。支持增量传输,只传输文件中发生变化的部分,节省带宽和时间。
1 | BR2_PACKAGE_RSYNC=y
|
2.1.4. 网络性能测试¶
iperf3
用于测量网络带宽和性能。可以测试TCP和UDP带宽,支持多线程测试,能生成详细的网络性能报告。
1 | BR2_PACKAGE_IPERF3=y
|
netperf
是一个网络性能基准测试工具,可测量多种网络协议(如TCP、UDP等)的吞吐量、延迟等性能指标。
1 | BR2_PACKAGE_NETPERF=y
|
2.1.5. 网络监控与诊断¶
tcpdump
是一个强大的网络数据包分析工具,可捕获和分析网络中的数据包,帮助诊断网络问题、进行网络安全审计等。
1 | BR2_PACKAGE_TCPDUMP=y
|
ethtool
是一个用于Linux系统的命令行工具,主要用于查询和修改以太网设备的驱动程序及硬件设置。
1 | BR2_PACKAGE_ETHTOOL=y
|
2.2. 外设接口相关软件包¶
2.2.1. GPIO控制相关¶
libgpiod
是一个用于控制GPIO引脚的库,它提供了一种简单且统一的方式来访问和操作GPIO设备。
1 2 | BR2_PACKAGE_LIBGPIOD=y
BR2_PACKAGE_LIBGPIOD_TOOLS=y
|
2.2.2. 输入检测相关¶
evtest
是一个用于测试输入设备(如键盘、鼠标、触摸屏等)的工具。它可以读取输入设备的事件并将其显示在终端上,帮助开发人员调试和验证输入设备的功能是否正常。
1 | BR2_PACKAGE_EVTEST=y
|
2.2.4. I2C调试相关¶
i2c-tools
是一组用于在Linux系统中与I2C总线设备进行交互的工具集。提供了一系列命令行工具,帮助开发者检测、配置和调试 I2C 设备。
1 2 | BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_I2C_TOOLS=y
|
2.2.5. CAN调试相关¶
can-utils
是一组用于在Linux系统中与CAN总线进行交互的工具集。提供了一系列命令行工具,方便开发者对CAN总线进行配置、监控和调试。
1 | BR2_PACKAGE_CAN_UTILS=y
|
2.2.6. 屏幕调试相关¶
fbset
是一个用于Linux系统中设置帧缓冲设备参数的命令行工具。
1 | BR2_PACKAGE_FBSET=y
|
tslib
用于触摸屏校准和处理的库。
1 | BR2_PACKAGE_TSLIB=y
|
2.2.7. 音频播放相关¶
alsa-utils
是一组基于高级Linux声音架构的实用工具集合。提供了一系列命令行工具,方便用户对ALSA驱动的音频设备进行配置、测试和调试。
1 2 3 | BR2_PACKAGE_ALSA_UTILS=y
BR2_PACKAGE_ALSA_UTILS_AMIXER=y
BR2_PACKAGE_ALSA_UTILS_APLAY=y
|
sox
SoX是一款强大的跨平台命令行音频处理工具,被广泛称为音频处理界的 “瑞士军刀”。它支持多种音频格式,能进行音频文件的格式转换、音频效果添加、音频编辑等操作。
1 2 | BR2_PACKAGE_SOX=y
BR2_PACKAGE_LIBSOXR=y
|
2.2.8. 摄像头相关¶
v4l-utils
是一组用于Linux系统中与视频框架进行交互的工具集。提供了一系列命令行工具,方便开发者和用户对视频设备进行配置、测试和调试。
1 2 | BR2_PACKAGE_LIBV4L
BR2_PACKAGE_LIBV4L_UTILS
|
gstreamer
是一个功能强大的开源多媒体框架,它允许开发者轻松地创建各种多媒体应用程序,如音频和视频播放器、流媒体服务器、视频编辑器等。
1 2 3 4 5 6 7 | BR2_PACKAGE_GSTREAMER1=y
BR2_PACKAGE_GST1_PLUGINS_BASE=y
BR2_PACKAGE_GST1_PLUGINS_GOOD=y
BR2_PACKAGE_GST1_PLUGINS_BAD=y
BR2_PACKAGE_GST1_PLUGINS_UGLY=y
BR2_PACKAGE_GST1_LIBAV=y
BR2_PACKAGE_GST1_RTSP_SERVER=y
|
2.2.9. 蓝牙相关¶
bluez
BlueZ是官方的Linux蓝牙协议栈,从 Linux2.4.6 开始便成为Linux内核的一部分。它由主机控制接口(HCI)层、蓝牙协议核心、逻辑链路控制和适配协议、SCO音频层、其他蓝牙服务、用户空间后台进程以及配置工具等组成。
1 2 | BR2_PACKAGE_BLUEZ5_UTILS=y
BR2_PACKAGE_BLUEZ_TOOLS=y
|
2.2.10. wifi相关¶
iw
是一个用于管理Linux系统中无线设备的命令行工具,它是新一代的无线配置工具,用于替代旧的iwconfig工具。
1 | BR2_PACKAGE_IW=y
|
wireless-tools
是一套用于管理和配置Linux系统中无线设备的工具集,它提供了一系列命令行工具和库,方便用户对无线网卡进行操作。
1 | BR2_PACKAGE_WIRELESS_TOOLS=y
|
wpa_supplicant
是一个用于在Linux系统中实现Wi-Fi连接和安全认证的工具。负责与Wi-Fi接入点进行认证和连接协商。
1 2 3 4 5 6 7 8 9 | BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING=y
BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
|
2.2.11. 4G相关¶
ipppd
负责在综合业务数字网(ISDN)环境下建立和管理点对点协议(PPP)连接。它能与远程设备协商连接参数,如IP地址、认证方式等,实现设备之间的通信链路建立。
1 | BR2_PACKAGE_PPPD=y
|
2.3. 系统分区相关软件包¶
2.3.1. 扩容相关¶
扩容需要使用resize2fs和parted工具,parted修改分区表,resize2fs修改分区空间。
1 2 3 | BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_PARTED=y
|
2.4. 常用工具¶
opencv
是一个广泛使用的开源计算机视觉库,它提供了丰富的计算机视觉算法和工具,涵盖了图像和视频处理、特征提取、目标检测、机器学习等多个领域。
1 | BR2_PACKAGE_OPENCV3=y
|
ffmpeg
可用来记录、转换数字音频、视频,并能将这些音视频转化为流。
1 | BR2_PACKAGE_FFMPEG=y
|
python
一种高级、通用、解释型的编程语言,以其简洁易读的语法和丰富的库生态系统而闻名。
1 | BR2_PACKAGE_PYTHON3=y
|
以上这些工具还有很多配置选项,可根据自身需求额外添加选择。
2.5. 交叉编译软件包¶
某些软件包可能在buildroot配置项中没有或者默认版本过低,可以自行获取软件包源码,交叉编译得到相应库和可执行文件。
2.5.1. 交叉编译工具链¶
在“Buildroot根文件系统的构建”章节我们指定使用了gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf交叉编译工具链, 将交叉编译工具链解压到了Buildroot源码根目录,那么交叉编译其他软件包时也要使用该交叉编译工具链。
1 2 3 4 5 6 7 8 9 10 11 12 | #进入交叉编译工具链目录
cd buildroot-2021.02.3/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/
#查看编译工具链版本
./arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/guest/imx6/buildroot-2021.02.3/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/8.3.0/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/src/gcc/configure --target=arm-linux-gnueabihf --prefix= --with-sysroot=/arm-linux-gnueabihf/libc --with-build-sysroot=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/install//arm-linux-gnueabihf/libc --with-bugurl=https://bugs.linaro.org/ --enable-gnu-indirect-function --enable-shared --disable-libssp --disable-libmudflap --enable-checking=release --enable-languages=c,c++,fortran --with-gmp=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-mpfr=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-mpc=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-isl=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-arch=armv7-a --with-fpu=neon --with-float=hard --with-arch=armv7-a --with-pkgversion='GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)'
Thread model: posix
gcc version 8.3.0 (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36))
|
从输出信息可见,该交叉编译工具链适用于arm平台,版本为8.3.0。
2.5.2. 交叉编译tslib软件包¶
2.5.2.1. 获取源码¶
以tslib软件包为例,访问以下链接获取最新源码包。
https://github.com/libts/tslib/releases
或者使用 tslib-1.23.tar.gz
版本。
2.5.2.2. 安装编译所必须的工具¶
1 | sudo apt install libtool autogen autoconf automake build-essential libgl1-mesa-dev
|
2.5.2.3. 交叉编译¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #解压源码包
tar xvf tslib-1.23.tar.gz
#进入源码
cd tslib-1.23/
#创建输出目录
mkdir build
#导出交叉编译工具链环境变量,使用绝对路径,自行修改
export PATH=/home/guest/imx6/buildroot-2021.02.3/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin:$PATH
#配置交叉编译工具链和输出目录,使用绝对路径,自行修改
./configure --host=arm-linux-gnueabihf --prefix=/home/guest/tslib-1.23/build
#编译
make -j16
#安装到输出目录
make install
#查看编译产物
ls build/
bin etc include lib share
|
最后将build/目录下的文件对应拷贝到板卡根文件系统即可。