交叉编译器及Linux下的第一个C程序
- 一、前言
- 二、Linux下的C程序编写
- 三、gcc编译器
- 四、交叉编译器
一、前言
在前几篇中主要介绍了VMware虚拟机、Ubuntu操作系统以及VMware tools的安装及使用,这对我们以后想要做嵌入式linux开发毫无疑问是打下了重要基础。接下来,将会继续介绍如何编写第一个linux下的C程序?什么是gcc编译器?如何编译运行所编写的C程序?
二、Linux下的C程序编写
到目前为止,嵌入式linux开发的软件环境差不多搭建好了,现在就可以编写Linux下的C程序,跟Windows下编写C程序是一样的。
1、建立一个test.c的文件
2、添加头文件
#include <stdio.h>//标准输入输出
3、编写主函数
int main(void)
{
printf("Hello Linux!!!\n");
return 0;
}
到此,一个简单的linux下C程序就写好了,那么我们怎么将写好的.c文件编译运行呢?
三、gcc编译器
gcc原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。
gcc编译生成步骤:预处理、编译、汇编、链接
1、预处理: 展开头文件/宏替换/去掉注释/条件编译
gcc -E tset.c -o test.i
2、编译:检查语法,生产汇编文件
gcc -S tset.i -o test.s
3、汇编:汇编代码转换成机器代码
gcc -C tset.s -o test.o
4、链接:将文件链接到一起生成可执行文件
gcc tset.o -o test
当然,每一条单独运行会很麻烦,可以使用一条命令直接将四个步骤综合起来,只会生成一个可执行文件test
gcc tset.c -o test
5、运行所生成的可执行文件
四、交叉编译器
所谓交叉编译器,就是在一种计算机环境(Linux)中运行的编译程序,能编译出在另外一种环境(ARM)下运行的代码。每个ARM公司都会提供自己的交叉编译器,大家可以选择自己合适的来进行编译。这里我所选择的是arm-linux-gnueabi,其运行命令和gcc差不多。
因为我是在linux环境下运行的,而testarm是ARM平台下的可执行文件,所以一运行就会出现可执行文件格式错误,如果是在ARM平台下,就会打印Hello Linux!!!。到此为止,关于嵌入式linux开发的初步必要环境已经全部搭建完成,如果后面需要其他的大家可以自行配置。关于vim的使用以及gdb调试,大家可以看一下其他资料学习一下,而shell命令则只需记住常用的就可以了。大家如果有什么问题,都可以一起讨论的,以后我会不定期更新一些我遇到的问题等心得。
嵌入式Linux开发之环境搭建(一)
嵌入式Linux开发之环境搭建(二)
嵌入式Linux开发之环境搭建(三)
嵌入式Linux开发之环境搭建(四)