Ubuntu20.04(64位)下搭建arm-gcc交叉编译环境

拈朵微笑的花儿 2024-08-14 12:07:02 阅读 58

一、获取到交叉编译器

例如:arm-linux-gcc-4.4.3.tar.gz

二、创建交叉编译器安装目录(需配置在PATH环境变量中)

   #myarm由自己定义

三、将交叉编译器压缩包拷贝到安装目录,或通过-C 指定解压到安装目录

方法1)进入到交叉编译器压缩包所在目录,执行命令:

解压压缩包:

方法2)进入到交叉编译器压缩包所在目录,执行命令:

额外命令:如果文件夹名字太长可以用mv命令更改名字(sudo mv 源目录 目的目录):

四、进入到编译器可执行程序所在的bin目录,执行pwd命令获得完整路径。

$ pwd

/usr/local/myarm/arm-linux-gcc-4.4.3/bin

五、配置环境变量PATH

先介绍下系统级的配置文件/etc/bash.bashrc和用户级的配置文件~/.bashrc的区别:

1)作用范围:

/etc/bash.bashrc:对系统中的所有用户生效。当新用户登录系统或者新打开一个终端会话时,如果系统引用了这个配置文件,其中的设置和命令将会被执行,对所有用户产生统一的影响。

~/.bashrc:位于用户的主目录下(~ 表示用户主目录)。每个用户都有自己独立的 .bashrc 文件,仅对当前用户生效。当该用户登录系统或打开新的终端会话时,系统会读取这个文件来执行其中的设置和命令。

2)配置内容:

/etc/bash.bashrc:通常包含一些系统管理员设置的全局环境变量、别名、函数等通用的配置和初始化设置,适用于整个系统的默认设置。

~/.bashrc:用户可以根据自己的需求和偏好自定义环境变量、别名、函数、命令提示符格式等个性化的设置,以满足自己的工作环境和习惯。

3)优先级:

如果两者存在相同的配置项,对于当前用户来说,~/.bashrc 中的设置会覆盖/etc/bash.bashrc 中的相同设置。也就是说,用户级的配置会优先于系统级的配置。

编辑~/.bashrc文件(编辑/etc/bash.bashrc文件同此方法)

(此处输入用户登录密码,隐藏不可见)

在~/.bashrc文件的最后添加:

六、更新环境变量、检查环境变量、检查编译器版本

        #更新环境变量PATH

                #检查环境变量PATH

        #检查编译器版本

七、出现问题如下:

1)编译源码时发现未安装make工具:

解决方法:安装make工具

2)安装后编译时报下面错误:

$ make

arm-linux-gcc -I.   -c -o protocol.o protocol.c

/usr/local/myarm/arm-linux-gcc-4.4.3/bin/arm-linux-gcc: 15: exec:

/usr/local/myarm/arm-linux-gcc-4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found

make: *** [<内置>:protocol.o] 错误 127

是因为在64位的Ubuntu20.04的Linux系统中无法兼容32位的交叉编译器。

解决方法是安装32位的运行库,执行以下命令:sudo apt-get install libc6-i386

3)继续报错:

arm-linux-gcc -I./libxml_build/include/libxml2   -c -o protocol.o protocol.c

/usr/local/myarm/arm-linux-gcc-4.4.3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

make: *** [<内置>:protocol.o] 错误 1

通常是因为系统中缺少了 libstdc++.so.6 这个共享库,或者系统中的该库版本过低。

解决方法:安装所需的32位库文件。

在终端中执行以下命令sudo apt-get install lib32stdc++6

     #安装32位的 libstdc++6 库。

4)编译时继续报错:

安装其他相关的32位库,执行以下命令:

5)直到此时,Ubuntu20.04 64bit系统中安装交叉编译器才成功



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。