博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!
阅读量:2028 次
发布时间:2019-04-28

本文共 1554 字,大约阅读时间需要 5 分钟。

Linux系统版本使用的是Ubuntu18.04

交叉编译工具链是arm-linux-gcc-4.5.1 【可到<>获取,提取码:8e40 】

一、交叉开发

由于嵌入式系统硬件上的特殊性,一般不能安装发行版的LINUX系统,例如FLASH存储空间很小,没有足够的空间安装;或者处理器很特殊,也没有发行版的LINUX系统可用。所以需要专门为特定的目标板定制LINUX操作系统,这必须要相应的开发环境。于是人们想到了交叉开发模式。

在开发主机上,可以安装开发工具,编辑,编译目标板的LINUX引导程序,内核和文件系统,然后再目标板上运行。通常这种在主机环境下开发,在目标板上运行的开发模式叫作交叉开发。

二、交叉编译环境arm-linux-gcc-4.5.1搭建

一开始Ubuntu处于普通用户模式

【注】正式搭建之前,请注意如果自己的Ubuntu版本是64位的,由于缺少32位的运行库,最后即使安装好交叉编译工具,会提示找不到此文件或目录。解决办法:命令行分别运行以下命令,安装32位运行库。

sudo apt-get install libc6-i386sudo apt-get install lsb-coresudo apt-get updatesudo apt-get install lib32z1

1、将arm-linux-gcc-4.5.1压缩包直接从主机拖曳到虚拟机的主目录下【可以直接拖是因为VMwareTools的功劳】

在这里插入图片描述

2、在该文件夹下,空白处右击然后选择“在终端打开”。

在这里插入图片描述

3、输入tar xzvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C /进行解压【注意使用tab自动补全文件名字】

在这里插入图片描述

在这里插入图片描述
解压后的文件放到了
在这里插入图片描述

4、接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。

环境变量是什么?

例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。如果上面不加入环境变量,要运行arm-linux-gcc这个程序,则每次都要把arm-linux-gcc的完整路径写出来。/usr/local/arm/4.4.3/binarm-linux-gcc 文件名 -o 输出文件名。这样非常的麻烦,所以加到path里面,让电脑知道这个程序在哪里。

输入gedit /root/.bashrc

在最后一行后加入export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin

在这里插入图片描述

5、在终端输入source ~/.bashrc命令或者重启电脑即可,使环境变量生效,然后输入arm-linux-gcc -v,如果安装成功将会输出 arm-linux-gcc的版本号。

在这里插入图片描述

6、【小试牛刀】交叉编译 Hello.c !

1)、在主目录下(当然还可以是其他目录)新建一个hello.c,键入以下代码

# include
int main(){
printf("Hello Linux!\n"); return 0;}

在这里插入图片描述

2)、在终端输入arm-linux-gcc hello.c -o hello,进行交叉编译。

注意到编译完之后会生成一个hello文件。

在这里插入图片描述

注意:这里生成的hello文件并不能像gcc编译出来的文件那样,直接使用“./hello”命令,执行并显示内容。因为它是一个二进制文件,只能下载到开发板上执行,这里没有开发板不在演示执行结果。

3)、如果在PC终端输入./hello,是不能不运行的,会出现下面错误。

在这里插入图片描述

转载地址:http://qznaf.baihongyu.com/

你可能感兴趣的文章
李开复:轻松掌握个人时间的四步骤
查看>>
英特尔诺基亚联手研发Symbian系统的智能手机
查看>>
成功的人看到问题的时候是想到怎么解决问题
查看>>
Symbian收购北京创世互动科技有限公司研发团队及技术以实施全球研发战略
查看>>
Spring的事务处理机制
查看>>
我是这样在第一轮筛选简历的
查看>>
struts2表单验证初步及国际化实现(学习总结)
查看>>
UML 的九种模型图
查看>>
【开发经验】Struts常见错误及原因分析
查看>>
优化软件性能的方法
查看>>
UML 基础: 类图
查看>>
怎样成为优秀的软件模型设计者?
查看>>
J2EE的13种核心技术
查看>>
解决spring和struts配合问题
查看>>
Java面试题:100的阶乘末尾有多少个零?
查看>>
财富两千强公司都选甲骨文SOA解决方案
查看>>
Java面试题:1-100之间的数,被放在数组a[99]中,有一个数没有包含在其中,用java代码找出这个数...
查看>>
交流:IT学习大本营:“2×10+10:积分+资源分”大派送
查看>>
IT行业经典面试题,121套面试题
查看>>
Java面试题:有数组a[n],用java代码将数组元素顺序颠倒
查看>>