欢迎来到山村网

Linux下编译C文件的过程

2019-03-09 13:44:33浏览:519 来源:山村网   
核心摘要:1、首先,写一个简单的C源文件:HelloWorld#include stdio.hint main(){printf(/nHello World!/n/n);return 0;}2、下面是调用gcc

1、首先,写一个简单的C源文件:HelloWorld

#include <stdio.h>int main(){        printf("/nHello World!/n/n");        return 0;}

2、下面是调用gcc命令编译HelloWorld.c的过程:

[root@localhost gcc_test]# ls -l
total 4
-rw-r--r-- 1 root root 78 Sep 11 00:17 HelloWorld.c

//gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。
[root@localhost gcc_test]# gcc -E HelloWorld.c -o step1.i


[root@localhost gcc_test]# ls -l
total 24
-rw-r--r-- 1 root root 78 Sep 11 00:17 HelloWorld.c
-rw-r--r-- 1 root root 18020 Sep 11 00:22 step1.i

//gcc的-S选项,表示在生成汇编代码后停止,-o输出汇编代码文件。
[root@localhost gcc_test]# gcc -S step1.i -o step2.s


[root@localhost gcc_test]# ls -l
total 28
-rw-r--r-- 1 root root 78 Sep 11 00:17 HelloWorld.c
-rw-r--r-- 1 root root 18020 Sep 11 00:22 step1.i
-rw-r--r-- 1 root root 454 Sep 11 00:22 step2.s

//gas汇编器负责将生成的汇编代码文件编译为目标文件
[root@localhost gcc_test]# gcc -c step2.s -o step3.o


[root@localhost gcc_test]# ls -l
total 32
-rw-r--r-- 1 root root 78 Sep 11 00:17 HelloWorld.c
-rw-r--r-- 1 root root 18020 Sep 11 00:22 step1.i
-rw-r--r-- 1 root root 454 Sep 11 00:22 step2.s
-rw-r--r-- 1 root root 880 Sep 11 00:23 step3.o

//gcc连接器,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。附加的目标文件包括静态连接库和动态连接库。
[root@localhost gcc_test]# gcc step3.o -o step4_result


[root@localhost gcc_test]# ls -l
total 40
-rw-r--r-- 1 root root 78 Sep 11 00:17 HelloWorld.c
-rw-r--r-- 1 root root 18020 Sep 11 00:22 step1.i
-rw-r--r-- 1 root root 454 Sep 11 00:22 step2.s
-rw-r--r-- 1 root root 880 Sep 11 00:23 step3.o
-rwxr-xr-x 1 root root 4734 Sep 11 00:23 step4_result

// 执行可执行程序
[root@localhost gcc_test]# ./step4_result


Hello World!


[root@localhost gcc_test]#

3、上述拆分的过程完全可以一步执行:

[root@localhost gcc_test]# gcc HelloWorld.c -o result
[root@localhost gcc_test]# ls -l
total 48
-rw-r--r-- 1 root root 78 Sep 11 00:17 HelloWorld.c
-rwxr-xr-x 1 root root 4734 Sep 11 00:39 result
-rw-r--r-- 1 root root 18020 Sep 11 00:22 step1.i
-rw-r--r-- 1 root root 454 Sep 11 00:22 step2.s
-rw-r--r-- 1 root root 880 Sep 11 00:23 step3.o
-rwxr-xr-x 1 root root 4734 Sep 11 00:23 step4_result
[root@localhost gcc_test]# ./result


Hello World!


[root@localhost gcc_test]#

(责任编辑:豆豆)
下一篇:

Linux下修改主机IP、主机名

上一篇:

Linux 信号signal处理机制

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com