当前位置: 首页 > news >正文

Buildroot使用外部编译工具链

以ARM32和ARM64两种架构举例。

一、ARM32

工具链:gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

$ tar -xf arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
$ mv arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf gcc-linaro-arm-linux-gnueabihf
$ ls gcc-linaro-arm-linux-gnueabihf/bin
arm-linux-gnueabihf-addr2line
...
arm-linux-gnueabihf-g++
arm-linux-gnueabihf-gcc
...
arm-linux-gnueabihf-strip

buidroot配置:qemu_arm_vexpress_defconfig.

$ make qemu_arm_vexpress_defconfig
$ make menuconfig

执行如下配置:

Toolchain  --->Toolchain type (External toolchain)  --->Toolchain (Custom toolchain)  --->Toolchain origin (Pre-installed toolchain)  --->(${home}/toolchain/gcc-linaro-arm-linux-gnueabihf) Toolchain path(arm-linux-gnueabihf) Toolchain prefixExternal toolchain gcc version (7.x)  --->External toolchain kernel headers series (4.10.x)  --->External toolchain C library (glibc)  --->[*] Toolchain has SSP support? (NEW)[*]   Toolchain has SSP strong support? (NEW)[*] Toolchain has RPC support? (NEW)[*] Toolchain has C++ support?[ ] Toolchain has D support?[*] Toolchain has Fortran support?[*] Toolchain has OpenMP support?

然后就可以正常编译了,如果工具链有差异,buildroot也会在编译过程中,报错退出,并告诉你开启什么关闭什么,根据提示修改后,就可以再次尝试编译,直到成功。

二、ARM64

工具链:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

$ tar -xf aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
$ mv aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu aarch64-linux-gnu/gcc-linaro-aarch64-linux-gnu
$ ls gcc-linaro-aarch64-linux-gnu/bin
aarch64-linux-gnu-addr2line
... ...
aarch64-linux-gnu-g++
aarch64-linux-gnu-gcc
... ...
aarch64-linux-gnu-strip

buidroot配置:qemu_aarch64_virt_defconfig.

$ make qemu_aarch64_virt_defconfig
$ make menuconfig

执行如下配置:

Toolchain  --->Toolchain type (External toolchain)  --->*** Toolchain External Options ***Toolchain (Custom toolchain)  --->Toolchain origin (Pre-installed toolchain)  --->(${home}/toolchain/gcc-linaro-aarch64-linux-gnu) Toolchain path(aarch64-linux-gnu) Toolchain prefixExternal toolchain gcc version (7.x)  --->External toolchain kernel headers series (4.10.x)  --->External toolchain C library (glibc)  --->[*] Toolchain has SSP support? (NEW)[*]   Toolchain has SSP strong support? (NEW)[*] Toolchain has RPC support? (NEW)[*] Toolchain has C++ support?[ ] Toolchain has D support? (NEW)[*] Toolchain has Fortran support?[*] Toolchain has OpenMP support?

注:工具请填写绝对路径。

三、C库

如果不想每个elf都静态编译,则把常用的C库放到目标板上,这样,每次elf运行就可以动态链接依赖库了。

不知道为什么,buildroot编译时,默认就把常用的C库复制到目标板了。如果没有自动复制到文件系统,可以配置如下:

$ make menuconfig

找到如下路径:

Toolchain  --->()  Extra toolchain libraries to be copied to target

在其中填入如下内容(复制粘贴过去即可):

ld-linux.so.3 libc.so.6 libm.so.6 libpthread.so.0 libdl.so.2 libresolv.so.2 librt.so.1 libnss_files.so.2 libnss_dns.so.2 libutil.so.1
  • ld-linux.so.3: 动态链接器/加载器,所有动态链接程序都需要它。
  • libc.so.6: GNU C 库的核心。
  • libm.so.6: 数学库。
  • libpthread.so.0: POSIX 线程库。
  • libdl.so.2: 动态链接库(用于 dlopen 等函数)。
  • libresolv.so.2: DNS 解析库。
  • librt.so.1: POSIX 实时扩展库。
  • libnss_files.so.2, libnss_dns.so.2: Name Service Switch 库,用于解析主机名等(例如 /etc/hosts 和 DNS)。
  • libutil.so.1: 包含一些工具函数。

这样,就可以使用动态链接版的elf文件了。

http://www.jsqmd.com/news/395114/

相关文章:

  • 【机器学习】OpenCV高级图像处理深度解析:原理、实战与踩坑记录
  • 毕业论文智能写作工具指南:十大优选平台解析
  • 跨物种意义纠缠:AI元人文视域下的人类原始伙伴关系重构
  • 基于AI的论文写作工具推荐:十大可信平台综合测评
  • 学术论文AI创作工具推荐:十大优质平台横向评测
  • 毕业论文AI辅助平台盘点:十款实用工具详细对比
  • 寒假20
  • 虚拟零售中AI架构的多模态融合:如何结合文本、图像、语音提升体验?
  • AI系统监控预警中的异常检测:架构师实战——如何用算法提升准确率?
  • 打造AI原生应用领域多语言支持的强大系统
  • 【UI自动化测试】9_web自动化测试 _元素等待
  • 简述智慧校园系统架构及各层的主要功能
  • 智慧校园平台系统:2026年教育数字化转型的核心引擎
  • 一些做独立站 SEO 的案例以及关键词技巧
  • 智慧校园系统在教学、管理、安防和生活四大场景的落地实践
  • 智慧校园系统:学校数字化转型的“关键中枢”
  • 智慧校园系统如何构建?详解其“数据驱动”的五大核心应用场景
  • 【UI自动化测试】10_web自动化测试 _frame切换、多窗口切换
  • CrossOver 26重磅升级,跟我抢先体验CrossOver 26新特性吧 - 雨林谷
  • 2026 年春节档电影推荐:口碑必看《惊蛰无声》,全家 / 爸妈 / 朋友全场景观影指南 - SFMEDIA
  • [算法]dp优化
  • 并查集 - # [POJ 1182] 食物链
  • 五大靠谱AI论文生成网站对比,助你快速完成毕业论文写作
  • 困扰于AI论文工具选择?这份专业评分的TOP5榜单可参考
  • 毕业论文用AI写作工具?这5个经过验证的网站排名最实用
  • 完整教程:【AI】AI学习笔记:翻译:langGraph 持久化执行 以及文档部分理解
  • 洛谷 P3378:[模板] 堆 ← 二叉堆
  • 论文写作AI工具如何挑?这份实测过的五大网站排名请收下
  • LabVIEW列车轴承声学成像应用
  • 高效完成论文的AI工具怎么选?精选五大优质平台排名解析