网站首页 > 技术教程 正文
常见的Linux操作系统都可以通过包管理器安装交叉编译工具链,比如Ubuntu环境下使用如下命令安装gcc交叉编译器:
sudo apt-get install gcc-arm-linux-gnueabihf
使用下面的命令安装g++交叉编译器:
sudo apt-get install g++-arm-linux-gnueabihf
一般来说,使用包管理器安装的编译器版本都比较新。但有的时候由于嵌入式设备内部的GLIBC库版本比较低,使用新版本编译器编译的程序可能无法在低版本的嵌入式设备内部运行。这时就需要手动安装一个低版本的交叉编译器。接下来以Linaro工具链为例,介绍如何安装一个低版本的交叉编译工具链,并与之前的工具链并存。
首先到下面的网址下载所需的工具链:
https://releases.linaro.org/components/toolchain/binaries/
比如下载2019.12月的版本,名称为:
gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf。将其解压缩后,复制到/opt/下,由于该名称较长,我将其缩短了一些,命名为:
gcc-linaro-7.5.0-x86_64_arm-linux-gnueabihf。
接下来修改环境变量$PATH、$ARCH 和$CROSS_COMPILE。
环境变量PATH指定交叉编译工具链的路径,按照从左到右的原则查找。我们想让低版本的工具链优先,因此将其放在最左边。
打开命令行窗口,输入如下命令:
export PATH=/opt/gcc-linaro-7.5.0-x86_64_arm-linux-gnueabihf/bin:$PATH
完成后通过下面的命令查看:
echo $PATH
指定架构和交叉编译工具链:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
完成后通过下面的命令查看:
echo $ARCH
echo $CROSS_COMPILE
需要注意的是,此时修改的环境变量仅对当前命令窗口(进程)有效。这也正是我们想要的,因为只在某些情况下需要低版本的交叉编译工具链,默认情况下还是使用新版本的交叉编译工具链。
如果你想知道当前使用的是哪个版本的工具链,可以输入下面的命令:
which arm-linux-gnueabihf-gcc
上述方法解决了交叉编译工具链共存的问题,但每一次都要输命令配置环境变量感觉比较繁琐,于是我将其写成了一个脚本env.sh,如下:
#!/bin/bash# 设置交叉编译工具链路径TOOLCHAIN_PATH="/opt/gcc-linaro-7.5.0-x86_64_arm-linux-gnueabihf/bin"export PATH="$TOOLCHAIN_PATH:$PATH"# 定义目标架构和交叉编译前缀export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabihf-# 可选:验证环境变量echo "当前环境变量PATH=$PATH"echo "当前环境变量ARCH=$ARCH"echo "当前环境变量CROSS_COMPILE=$CROSS_COMPILE"
将其赋予可执行权限。使用下面的命令执行脚本:
. env.sh
或者下面的命令:
source env.sh
注意不要使用下面的命令:
./env.sh
因为./env.sh执行后环境变量仅在子进程中生效,不在当前窗口(父进程)中生效。
好了,关于Linux环境下设置多个交叉编译工具链的方式就介绍到这里。
下面是嵌入式Linux文章的归档链接:
猜你喜欢
- 2025-07-21 Linux远程文件传输神器:rz / sz 全指南(含实操示例)
- 2025-07-21 消防设施操作员模块八:计算机基础知识精讲
- 2025-07-21 谈一谈在linux中实用性较强的scp命令,附有案例
- 2025-07-21 免费开源的图形化磁盘分区管理工具-GParted
- 2025-07-21 Linux——文件传输协议知识点梳理
- 2025-07-21 全选是ctrl加什么?全选的快捷键是什么介绍
- 2025-07-21 Linux dd命令有多强大?(linux的dig命令)
- 2025-07-21 Windows 10 20H2新特性概览:细节优化 提升使用体验
- 2025-07-21 告别QQ/微信截图?这款工具组合让你的效率飙升300%
- 2025-07-21 再见 Cursor,从0到1用上Claude Code后,惊呼这才是生产力工具
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)