Linux编译C程序
Synopsis: 分析了Linux环境下从创建C语言源代码到最终的可执行文件的整个过程,中间经过于处理器的预处理阶段(源文件到预处理文件),编译器的编译阶段(预处理文件到汇编文件),汇编器的汇编阶段(汇编文件到可重定向的目标文件),链接器的链接阶段(可重定向的目标文件到可执行的目标文件)。另外简单地介绍了gdb调试工具
1. 创建源代码
可以使用vim
或nano
工具编辑源代码文件:
[root@CentOS ~]# vim hello.c 内容如下: #include <stdio.h> int main(){ printf("Hello, World!\n"); return 0; }
在vim
一般模式下(按ESC
退出编辑模式),输入:%!xxd
可以查看hello.c的16进制
形式,如果要回到文本格式则输入:%!xxd -r
。如果输入:%!xxd -b
可以查看hello.c的二进制
形式,这是hello.c保存在磁盘上的存储状态。
2. 编译与运行
gcc命令的基本用法为gcc [options] [filenames]
,如果只指定源代码文件名而不使用任何选项时,gcc将会自动编译产生一个a.out的可执行文件:
[root@CentOS ~]# gcc hello.c [root@CentOS ~]# ls -l -rw-r--r-- 1 root root 78 Jan 13 09:45 hello.c -rwxr-xr-x 1 root root 34749 Jan 13 09:41 a.out [root@CentOS ~]# ./a.out Hello, World!
使用-o
选项可以指定编译后生成的文件名:
[root@CentOS ~]# gcc -o hello hello.c [root@CentOS ~]# ls -l -rw-r--r-- 1 root root 78 Jan 13 09:45 hello.c -rwxr-xr-x 1 root root 6425 Jan 13 09:46 hello [root@CentOS ~]# ./hello Hello, World!
3. 分析过程
3.1 预处理阶段
使用-E
选项只做预处理不编译,当使用这个选项时,预处理器的输出被送到标准输出而不是存储到文件。如果想将预处理的输出存储到文件,可结合-o
选项使用,使用如下:
[root@CentOS ~]# gcc -E hello.c -o hello.i [root@CentOS ~]# ls -l -rw-r--r-- 1 root root 78 Jan 13 09:45 hello.c -rw-r--r-- 1 root root 16738 Jan 13 10:06 hello.i [root@CentOS ~]# less hello.i
未经允许不得转载: LIFE & SHARE - 王颜公子 » Linux编译C程序
0 条评论
评论者的用户名
评论时间暂时还没有评论.