Ubuntu 18.04安装arm-linux-gcc交叉编译器(超简单,附安装包下载地址)_ubuntu18.04下载aarch64-linux-gnu-gdb-程序员宅基地

技术标签: arm-linux-gcc交叉编译工具  arm-linux-gcc  Ubuntu 18.04  交叉编译器  

安装这个交叉编译器的基本上都是嵌入式行业的兄dei吧。。。

目前网上搜索发现,最多人安装的是4.4.3版本的:

arm-linux-gcc-4.4.3.tar.gz

下载地址:https://pan.baidu.com/s/1rAIBASIRZAXl-P1UOW9JVg 
提取码:mgrb 

但是很多人安装之后发现不能用,会遇到“arm-none-linux-gnueabi-gcc: not found”这个问题出现是因为,你的linux系统是64位的系统的而你安装的arm-linux-gcc-4.4.3是32位的软件,虽然64位系统可以运行32位的软件,但需要安装32位的运行库,你没安装32位运行库就不能使用。

所以我建议各位如果你使用的是64位的Ubuntu系统,那就安装64位的arm-linux-gcc交叉编译器,直接安装就能成功:

例如:arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2

下载地址:https://pan.baidu.com/s/1xuh8M8bQHfZt_w6h4vRKeg 
提取码:uk85 

接下来介绍2种 arm-linux-gcc交叉编译工具链的安装方法:

(方法一源于网络转载可能有步骤不全的问题,方法二是本人亲自验证过没问题)

方法一:

我们都知道Ubuntu有一个专门用来安装软件的工具apt,我们可以用它来全自动安装arm-linux-gcc。

此方法安装的是最新版的,如果你要安装的是某一特定版本的不推荐此方法!还要注意这个需要使用国内的apt软件源服务器,如果此方法不行的话就用方法二:

首先Ctrl+Alt+T弹出终端,使用如下命令进行arm-linux-gcc的安装:

sudo apt-get install gcc-arm-linux-gnueabihf

使用如下命令进行arm-linux-g++的安装:

sudo apt-get install g++-arm-linux-gnueabihf

如果要卸载时使用如下命令进行移除,arm-linux-gcc的卸载:

sudo apt-get remove gcc-arm-linux-gnueabihf

arm-linux-g++的卸载:

sudo apt-get remove g++-arm-linux-gnueabihf

方法二:

安装64位的交叉编译工具,先根据上面提供的下载地址下载安装包:arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2

1.先把下载好的安装包移动到根目录下的tmp目录中(/tmp)

2.使用tar命令解压安装包,即在Terminal中输入以下命令:(前面的sudo表示使用root权限执行该命令)

sudo tar -xjvf /tmp/arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 -C /

注意是大写的字母C,此命令会把安装包解压到根目录下的opt的TuxamitoSoftToolchains里面(/opt/TuxamitoSoftToolchains)

如图逐层查看找到gcc-4.6.4所在的位置:/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi

3.解压完成后,再在(/usr/local)中创建一个新目录arm,即在Terminal中输入以下命令:

sudo mkdir /usr/local/arm

创建arm目录成功后,还需要给它解放全部权限,即在Terminal中输入以下命令:

sudo chmod 777 /usr/local/arm

4.在解压出来的目录中找到并把整个gcc-4.6.4目录复制到刚刚建好的arm目录中,命令如下:

先cd切换到gcc-4.6.4所在目录(切换后先ls看一下有没有gcc-4.6.4目录):

cd /opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/

再执行 cp 复制命令,-r 表示整个目录以及里面的任何东西

sudo cp -r gcc-4.6.4 /usr/local/arm

5.打开(/etc/profile)配置环境变量和库变量,目的是以后可以在任何位置使用该交叉编译器,命令如下:

sudo vi /etc/profile

用vi或者vim打开后,在文件最后添加两行,并输入以下代码:第一行是添加执行程序的环境变量,第二行是库文件的路径

export PATH=$PATH:/usr/local/arm/gcc-4.6.4/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-4.6.4/lib

然后保存退出即可。

6.使用source命令重新加载生效该配置文件

source /etc/profile

7.检验是否安装成功,在 Terminal 输入以下命令输出版本信息:

 arm-linux-gcc -v

结果如图所示:得到刚刚安装的4.6.4版

再随便写一个1.c文件,能编译成功说明已经完美安装。例如:

arm-linux-gcc 1.c -o pp

再file命令查看编译后的是不是arm的可执行文件:

file pp

可以看到编译后的可执行文件是在 32-bit 的 ARM架构上运行的。

注意:有些做完上述步骤还是不能用arm-linux-gcc的话,出现如下图所示错误:

这和时候需要在 “/home/用户名” 目录下的 ".bashrc" 隐藏文件下加上和 “/etc/profile” 一样的两句

export PATH=$PATH:/usr/local/arm/gcc-4.6.4/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-4.6.4/lib

这个 ".bashrc" 是一个隐藏文件,需要  ls -a 命令才能看见!用户名就是你自己的linux登录账号。

同样用 vi或者vim打开它,在最后添加两行:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wu10188/article/details/86542418

智能推荐

2020最流行的密码,黑客都不想破解,快看看你是不是在用_10位高级复杂密码大全-程序员宅基地

文章浏览阅读2k次。盘点大众最常用、最受欢迎的密码:一系列的顺序数字和基于 26键的 qwerty 连续字母 娱乐、运动、食物和设备等专有词汇此前,某报告总结显示:“123456”位居第一,有 250 万人使用,其在数据泄露方面的暴露次数超过 2300 万次。“123456789”排在第二位,超过 96.1 万人正在使用,该密码暴露在漏洞中的次数超过 780 万次。“picture1”排在第三位,图形密码,这是一个新上榜密码,相较其他常用密码安全性要更高一点。前十位的密码使用排列如下图所示:._10位高级复杂密码大全

【ZYNQ 详细案例二】VGA显示的详细实现与原理分析 彩条实验 基于ZEDBOARD_vga rgb444-程序员宅基地

文章浏览阅读2.6k次,点赞7次,收藏29次。【ZedBoard VGA显示】首先我们来看看Zedboard用户手册和数据手册上对于其VGA端口的定义可知由以上的信息我们得到。VGA显示信号由以下部分组成:1、RGB444的数据值2、VGA-HS: VGA行同步信号3、VGA-VS: VGA场同步信号(列同步)行同步有效说明一行扫描完了,到达下一行开始扫描‘场同步信号有效说明整个屏幕完成,又回到第一行开始扫描。以此重复达到持续绘制VGA显示屏幕这一功能。但是,在显示器上的电子枪在扫描过程中需要进行复位调整,这时如果我们在复位时开始执行_vga rgb444

Java String转double-程序员宅基地

文章浏览阅读2.1w次。如果输入的数据为double,则需要将字符串转换为double。为此,我们使用Double.parseDouble() 方法。我们可以使用Double.parseDouble() 方法在Java中将String转换为double。parseDouble() 是Double类的静态方法。2Java String转double的应用场景。1 Java String转double的介绍。3Java String转double的声明。4Java String转double的案例。..._java string转double

fread第二个参数和第三个参数互换注意点——————————函数指针定义注意_fwrite第二和第三个参数可以交换位置吗-程序员宅基地

文章浏览阅读966次。size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)第一个参数:读取数据放入的首地址第二个参数:一次读取多少个字节第三个参数:读多少次size第四个参数:读取文件的文件指针返回值:返回第三个参数,如果小于第三个参数就返回实际读取的大小,如果读取的内容小于第二个参数会发生读到文件结尾(返回值为0)或者发生_fwrite第二和第三个参数可以交换位置吗

2021Java高级面试题,超详细_jsp面试高级-程序员宅基地

文章浏览阅读745次。前言再过一周,马上将迎来新的一年,希望大家在2021年“牛气冲天,牛年大吉”,一起迎接春暖花开之时。金三银四马上就到了,很多粉丝朋友私信希望我出一篇面试专题或者分享面试相关的笔记来学习,小编还是相当宠粉的,这不今天就给大家安排上了?(都是干货,错过就是亏。)下面的面试笔记都是精心整理好免费分享给大家的,希望新朋友和老朋友不要吝啬你的赞和转发。一、Spring面试题1、Spring 在ssm中起什么作用?答:Spring:Spring轻量级框架。作用:Bean工厂,用来管理Bean的生命周_jsp面试高级

arduino nano 蓝牙_初学者适用!基于Arduino开发板控制SG90伺服电机方案-程序员宅基地

文章浏览阅读1.5k次。本文非常适合初学者,因为它很容易上手,并且为他们建立有趣的项目(例如通常使用伺服器的机器人)奠定了基础。伺服电机(Servo Motor)是高转矩电机,由于其在机器人和其他一些应用中的通用性,轻松控制其旋转。伺服电机也称为舵机,它带有齿轮输出轴,该齿轮输出轴可以通过电气控制,每次旋转一度。为了控制起见,与普通的直流电动机不同,伺服电机通常在两个电源引脚(VCC和GND)的旁边有一个引脚,即信..._arduino nano伺服控制

随便推点

视觉SLAM理论与实践进阶-手写VIO-2_research notes and jacobians:continuous-time visua-程序员宅基地

文章浏览阅读970次。vvv_research notes and jacobians:continuous-time visual-inertial trajectory esti

详解shell中source、sh、bash、./执行脚本的区别_bat脚本中source-程序员宅基地

文章浏览阅读922次,点赞2次,收藏7次。1、source命令用法:  source FileName  作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限" 注:该命令通常用命令“.”来替代。 如:source .bash_profile . .bash_profile两者等效。 source(或点)命令通常用于重新执行刚修改的初始..._bat脚本中source

10年软件测试工程师感悟-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏6次。这两天和朋友谈到软件测试的发展,其实软件测试已经在不知不觉中发生了非常大的改变,前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和。当然,我说的是最基础的功能测试的岗位需求已经很少了,而自动化、性能、安全乃至于以后可能出现的大数据测试、AI测试仍存在着非常多的机会。“长江后浪推前浪,前浪死在沙滩上”,曾经一句让人会心一笑的调侃,而今变成了软件测试行业的真实写照。由于软件测试行业入门门槛低,薪资报酬高,不断有新鲜血液冲刷着软

Mac下在AndroidStudio中完美添加Gradle_mac android studio 导入gradle zip-程序员宅基地

文章浏览阅读1.1k次。Mac下在AndroidStudio中完美添加Gradle今天入职一家新公司,从gitLab上面拉下项目,编译过程中由于gradle下载时间太长导致项目报错Re-download dependencies and sync project (requires network),这个问题修改gradle版本也可以的,由于项目是多人开发操作,最好gradle版本保持一致,下面分享一下我的解决方案。1.首先我们要去官网提前下载好项目对应的gradle版本,gradle官方网站2.下载完成后打开终端,输入“_mac android studio 导入gradle zip

28 避免返回handles指向对象内部成分——effective c++_避免返回handles(包括references、指针、迭代器)指向对象内部。-程序员宅基地

文章浏览阅读1.5k次。这样做有两个问题:a) 降低对象的封装性。把内部结构暴露在外面。b) 调用const函数,但是仍然可以更改对象。有一个办法可以解决第二个问题,即返回的handles加上一个const限制,这样就可以更改返回的对象了。另外,也会有一个新的问题——dangling handles(悬空的号码牌)。如果handles指向的指针已经释放,但是返回的handles却无法知道。请记住:避免返回handles(包括reference,指针,迭代器)指向对象内部。遵守这个条款可以增加封装性,帮助co_避免返回handles(包括references、指针、迭代器)指向对象内部。

优雅地封装 Activity Result API-程序员宅基地

文章浏览阅读1k次。/ 今日科技快讯 /近日,腾讯控股旗下游戏《王者荣耀》的健康系统升级。根据其发布的公告,在国家新闻出版署《关于防止未成年人沉迷网络游戏的通知》相关规定的基础上,腾讯为进一步加大未成..._com.github.chinalike:activityresultapi