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

  金牌会员 | 2024-12-13 01:30:53 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 806|帖子 806|积分 2418

关于该把下面的三条交叉编译配置语句加到那里,详情见
https://blog.csdn.net/wenhao_ir/article/details/144326545
的第2点。
现在试解释下面三条交叉编译配置语句:
  1. export ARCH=arm
  2. export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
  3. 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 目录下,现在它就可以直接被终端识别。


总结


  • 通过 PATH 查找到工具链的二进制文件
  • 通过 CROSS_COMPILE 确定工具链前缀,用于构建系统的调用
  • 通过 ARCH=arm 指定目标架构,确保生成适合 ARM 平台的代码
如何使命令arm-buildroot-linux-gnueabihf-gcc -v
生效?


通过上面三条配置,环境已经准确设置,以下是如何让命令生效的步骤:
1. 查找路径

当你运行:
  1. arm-buildroot-linux-gnueabihf-gcc -v
复制代码


  • 系统查找流程

    • 系统会在 PATH 指定的目录中逐一查找名为 arm-buildroot-linux-gnueabihf-gcc 的可执行文件。
    • 由于 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句。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表