【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!
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-i386
sudo apt-get install lsb-core
sudo apt-get update
sudo apt-get install lib32z1
- 1
- 2
- 3
- 4
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<stdio.h>
int main()
{
printf("Hello Linux!\n");
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
2)、在终端输入arm-linux-gcc hello.c -o hello
,进行交叉编译。
注意到编译完之后会生成一个hello
文件。
注意:这里生成的hello文件并不能像gcc编译出来的文件那样,直接使用“./hello
”命令,执行并显示内容。因为它是一个二进制文件,只能下载到开发板上执行,这里没有开发板不在演示执行结果。
3)、如果在PC终端输入./hello
,是不能不运行的,会出现下面错误。
文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。
原文链接:recclay.blog.csdn.net/article/details/101423820
- 点赞
- 收藏
- 关注作者
评论(0)