设为首页 加入收藏

TOP

4.3.5 编译器gcc(2)
2013-10-12 06:57:00 来源: 作者: 【 】 浏览:92
Tags:4.3.5 编译器 gcc

4.3.5  编译器gcc(2)

下面通过一个具体的例子来介绍vi编辑器和gcc编译器的使用。

例:新建一个hello.c,并用gcc编译、执行,步骤如下。

(1) 在当前目录下的终端命令行输入以下命令:

  1. $vi hello.c 

即可进入vi空文档编辑界面,此时文档的名称为hello.c。

(2) 按键盘上的"i"键,进入编辑代码状态,这个时候输入以下程序。

  1. #include <stdio.h> 
  2. int main(void)  
  3. {  
  4.     printf("\nHello,ARM!\n");  
  5.     return 0;  

(3) 输入完成之后,由于当前处于编辑状态,可以按"ESC"键进入命令行模式。在命令行模式下按住Shift+":"组合键进入底行模式。这时编辑器左下角有冒号":"提示符,就可以输入命令了。输入下面命令存盘退出。

  1. :wq 

(4) 返回终端命令行界面,利用gcc进入编译和链接,输入命令

  1. $gcc hello.c -o hello 

就可以生成hello可执行文件了。

(5) 执行程序,终端输入下面命令,观察输出结果,如图4-4所示。

  1. $./hello 
 
(点击查看大图)图4-4  hello程序的执行结果

3. 编译多个源文件

有时候一个源程序可以分成几个文件。这样既便于编辑,又便于理解,尤其是程序非常大的时候。这也使对各部分独立编译成为可能。

下面的例子中我们将程序Hello ARM分割成三个文件:main.c、hello_fn.c和头文件hello.h。在先前的例子"hello.c"中,我们调用的是库函数printf,本例中我们用一个定义在文件"hello_fn.c"中的函数hello取代它。

下面是主程序"main.c":

  1. #include "hello.h"  
  2. main(void)  
  3. {  
  4. hello("Embedded Linux");  
  5. return 0;  

主程序中包含有头文件"hello.h",该头文件包含函数hello的声明。我们不需要在"main.c"文件中包含系统头文件"stdio.h"来声明函数printf,因为"main.c"没有直接调用printf。

文件"hello.h"中的声明只用了一行就指定了函数hello的原型。

  1. void hello(const char * name) 

函数hello的定义在文件"hello_fn.c"中:

  1. #include <stdio.h> 
  2. #include "hello.h"  
  3. void hello (const char * name)  
  4. {  
  5. printf ("Hello,%s!\n",name);  

这里需要注意一点:语句"#include "FILE.h""与"#include <FILE.h>"是有区别的:前者在搜索系统头文件目录之前将先在当前目录中搜索文件"FILE.h",后者只搜索系统头文件而不查看当前目录。

下面开始编译过程,这里gcc需要同时编译多个文件,所以使用下面的命令:

  1. $ gcc -Wall main.c hello_fn.c -o newhello 

本例中,我们使用选项-o为可执行文件指定了一个不同的名字newhello。注意到头文件"hello.h"并未在命令行中指定。源文件中的"#include "hello.h""指示符使得编译器自动将其包含到合适的位置。

要运行本程序,输入可执行文件的路径名:

  1. $ ./newhello  
  2. Hello,Embedded Linux! 

源程序各部分被编译为单一的可执行文件,它与我们先前的例子产生的结果相同。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.2 ARM汇编与C语言编程 下一篇4.3.5 编译器gcc(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: