手机版
你好,游客 登录 注册
背景:
阅读新闻

Ubuntu下编译C程序的详解

[日期:2012-11-01] 来源:Linux社区  作者:liangxanhai [字体: ]

1、C语言中的各种后缀名代表的意思:

.a文件代表的是静态库

.c代表c源代码

.h代表c源代码头文件

.i代表的是c源代码(这是被预处理过后的结果)

.o对象文件

.s汇编语言的代码

.so动态库

2、c语言程序从源代码到生成可执行文件的过程:c程序源代码(.c文件)-----(1)-----不用预处理的c程序源代码(.i文件)----(2)---汇编语言文件(.s文件)------(3)-----机器语言文件(.o文件)-----(4)------可执行文件

其中的每个过程的意义如下:过程(1)是预处理阶段,这个阶段主要是根据#开头的命令修改c源文件,主要的工作是,比如#include<stdio.h>命令告诉预处理器读取系统文件stdio.h的内容并且把相应的内容插入到源代码中去,就形成了.i文件。

过程(2):这个过程是编译阶段,编译器将文本文件.i文件翻译成文本文件.s文件。这个文件是与源文件等效的汇编语言程序。

过程(3):这个过程主要是汇编阶段,在这个阶段中汇编器将.s文件编译成机器语言指令就是这里的.o文件。

过程(4):这个过程是链接阶段,这个阶段主要就是将程序中的一些库函数用链接器给进行链接(链接过程包括静态链接和动态链接,在这里就不细说了)。

3、讲一下Ubuntu下面c源程序的各种文件的获得:(比如有一个源程序为hello.c文件)

(1)、为了获得可执行文件可以使用命令:gcc hello.c -o a其中-o是用来指定所生成的可执行程序的文件名,比如这里生成的文件名是a。

(2)、如果程序中用到了不是gcc默认的库函数的时候,比如程序中用到了math.h这个头文件。这个头文件不是gcc默认的头文件,所以在编译的时候要加入-l库的首字母来进行编译。比如这里是:gcc hello.c -lm -o a.

(3)、为了将源程序编译成.o文件的命令是指定参数-c来进行编译。例如这里要生成hello.o文件的编译为:gcc -c hello.c -o hello.o。

(4)如果要执行预处理的话,使用的编译代码就是加上参数-E来进行编译,比如我们这里要生成hello.i文件,则我们编译代码是:gcc -E hello.c -o hello.i。

(5)、如果要生成汇编代码,使用的编译代码就是加上参数-S进行编译,比如我们要生成hello.s文件,则我们使用的编译代码是:gcc -S hello.c -o hello.s。

linux
相关资讯       C  Ubuntu编译C 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款