当前位置:首页 > 技术文章 > 正文内容

Linux环境下如何设置多个交叉编译工具链?

douba34周前 (08-05)技术文章12

常见的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文章的归档链接:

嵌入式Linux文章归档 | 北岛夜话

相关文章

多功能开源终端Wave Terminal安装与远程连接内网Linux服务器教程

前言本文主要介绍一款多功能高颜值的跨平台开源终端Wave Terminal在Windows电脑上如何安装,并结合cpolar内网穿透工具轻松实现跨网络远程连接本地内网Linux服务器,无需公网IP。作...

第五章 Linux常用服务介绍-5.2 FTP服务

1)ftp服务器安装和配置FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文本传输协议”,通常我们就叫它FTP服务。用于Internet上的控制文件的双...

Linux常见的网络客户端工具ping/lftp/ftp/lftpget/wget应用示例

以下是Linux中常用的网络工具的带参数和不带参数的功能及详细示例:ping:不带参数功能:使用ping命令可以测试主机之间的连通性。示例:ping google.com,测试与google.com的...

linux基础01:如何在windows电脑上安装linux系统?

因为我们身边的电脑99%都安装的windows系统,所以,为了更好地更方便地学习linux知识,我们一般都会选择在windows电脑上安装一个虚拟机,然后,在虚拟机上安装一下linux系统。这样,我们...

揭秘:黑客必备的Linux到底是什么,有哪些弊端?

大家看见标题都会好奇,为什么计算机专业必绕不过Linux系统?可能觉得我在夸大其词,其实不然。首先我们来看看什么是Linux ?就和大家现在经常使用的电脑系统Windows和Mac Os ,手机系统的...

Linux成为计算机史上最大的软件开发项目

Linux内核开发者和维护者Greg Kroah-Hartmant在柏林举行的CoreOS Fest上发表演讲,描述了Linux内核项目的庞大规模。 Kroah-Hartman称,最新版的Linux...