【嵌入式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、将arm-linux-gcc-4.5.1压缩包直接从主机拖曳到虚拟机的主目录下【可以直接拖是因为VMwareTools的功劳】

【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第1张图片

2、在该文件夹下,空白处右击然后选择“在终端打开”。
【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第2张图片

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

【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第3张图片
【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第4张图片
解压后的文件放到了
【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第5张图片

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

【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第6张图片

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

【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第7张图片

6、【小试牛刀】单文件编译Hello Linux!

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

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

【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第8张图片

2)、在终端输入gcc -Wall hello.c -o hello,进行编译链接。

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

【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第9张图片

3)、在终端输入./hello,进行运行,显示结果。

【嵌入式Linux学习】6、交叉编译环境的搭建,单文件编译Hello Linux!_第10张图片

你可能感兴趣的:(嵌入式Linux学习)