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

Ubuntu中配置交叉编译工具的三条命令的详细研究

关于该把下面的三条交叉编译配置语句加到哪里,详情见
https://blog.csdn.net/wenhao_ir/article/details/144326545
的第2点。

现在试解释下面三条交叉编译配置语句:

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

答:这三条配置语句用于设置交叉编译的环境变量,从而让交叉编译工具链能够被正确找到并使用。以下是详细解析:


配置语句解析

1. export ARCH=arm
  • 作用
    • 设置目标架构为 arm,告诉构建工具你正在为 ARM 架构的设备编译代码。
    • 在一些构建系统(例如 Linux 内核 Makefile 或 Buildroot)中,这个变量决定目标架构。
  • 影响
    • 这个变量通常被 Makefile 或构建工具读取,确保编译器生成适合 ARM 架构的代码。

注意:export ARCH=arm 是一个在交叉编译环境中 非常重要 的变量,但它的作用并不是直接被交叉编译工具(例如 gcc)使用,而是被 构建系统(例如 Linux 内核的 Makefile 或一些编译框架)用来指导交叉编译过程。


2. export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
  • 作用
    • 指定交叉编译工具链的前缀。
    • 交叉编译工具链的命令(如 gcc, ld, as)通常以固定的前缀命名,比如 arm-buildroot-linux-gnueabihf-gcc
    • 设置这个变量后,Makefile 或构建工具会在需要调用编译器时,自动将前缀加到命令前。例如:
      • $(CROSS_COMPILE)gcc 会被解析为 arm-buildroot-linux-gnueabihf-gcc

3. export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
  • 作用

    • 将交叉编译工具链的 bin 目录添加到环境变量 PATH 中。
    • 环境变量 PATH 告诉系统去哪些目录查找可执行文件。
    • 添加工具链所在目录后,终端可以直接找到并运行工具链的命令。
  • 影响

    • 如果 arm-buildroot-linux-gnueabihf-gcc 位于 /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin 目录下,现在它就可以直接被终端识别。

总结

  1. 通过 PATH 查找到工具链的二进制文件
  2. 通过 CROSS_COMPILE 确定工具链前缀,用于构建系统的调用
  3. 通过 ARCH=arm 指定目标架构,确保生成适合 ARM 平台的代码

如何使命令arm-buildroot-linux-gnueabihf-gcc -v生效?

通过上面三条配置,环境已经正确设置,以下是如何让命令生效的步骤:

1. 查找路径

当你运行:

arm-buildroot-linux-gnueabihf-gcc -v
  • 系统查找流程
    1. 系统会在 PATH 指定的目录中逐一查找名为 arm-buildroot-linux-gnueabihf-gcc 的可执行文件。
    2. 由于 PATH 包含了 /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin,系统会在这个目录下找到工具链。
2. 执行工具
  • arm-buildroot-linux-gnueabihf-gcc 是工具链的交叉编译器,运行时会根据配置为目标平台(ARM 架构)生成二进制文件。
  • -v 参数是查看编译器版本的常用选项,确认工具链是否安装正确。

其实命令arm-buildroot-linux-gnueabihf-gcc -v是没有用到配置语句的第1句export ARCH=arm和第3句export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin的。
第1句是Makefile时用;
如果把arm-buildroot-linux-gnueabihf-gcc -v改为 ${CROSS_COMPILE}gcc -v那么就用到了第2句。

在这里插入图片描述


http://www.kler.cn/a/428371.html

相关文章:

  • el-dialog内容大于高度时可滑动
  • Java学习教程,从入门到精通,JDBC创建数据库语法知识点及案例代码(99)
  • 高效沟通驱动LabVIEW项目成功
  • MySQL数据库批量插入包含uuid的数据
  • Go语言中的值类型和引用类型特点
  • OpenStack基础架构
  • 智能制造的加速器:RPA在制造业中的创新实践
  • 【Atcoder】【ABC383】B.Humidifier2题解
  • 使用Docker容器化部署Django项目:从零开始的最佳实践指南
  • Istio Ambient 模式中的透明流量拦截过程详解
  • Ubuntu中安装配置交叉编译工具并进行测试
  • Flink如何基于数据版本使用最新离线数据
  • Python 中的属性访问器是什么?如何使用 @property 装饰器?
  • 数据库原理实验实验四 统计查询和组合查询
  • windows安装使用conda
  • learn-(Uni-app)跨平台应用的框架
  • 2024-10-13-B fd 重定向 缓冲区
  • 链式设计及设计模式的应用
  • application.yml 和 bootstrap.yml
  • 坚果投影仪J10如何用苹果Siri开关机并和米家联动
  • 一、Origin绘制柱状图
  • 23种设计模式之解释器模式
  • 【PlantUML系列】状态图(六)
  • 2-2-18-14 QNX系统架构之 TCP/IP 网络
  • 保护数字资产:iOS 加固在当前安全环境中的重要性
  • ChatGPT Pro是什么