继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Linux C 编译流程(GCC)

holdtom
关注TA
已关注
手记 1846
粉丝 240
获赞 991


1 开发环境、工具

    通常所说的GCC是GUN Compiler Collection的简称,是Linux系统上常用的编译工具;GCC工具链软件包括GCC、Binutils、C运行库等

 

1.1 GCC

    GCC(GNU C Compiler)是编译工具;将 C/C++语言 编写的程序转换成为处理器能够执行的二进制代码的过程 即由编译器完成

 

1.2 Binutils

    一组二进制程序处理工具,包括:addr2line、ar、objcopy、objdump、as、ld、ldd、readelf、size等。这一组工具是开发和调试不可缺少的工具

工具 说明

addr2line   用来将程序地址转换成其所对应的程序源文件及所对应的代码行,也可以得到所对应的函数。该工具将帮助调试器在调试的过程中定位对应的源代码位置

as 主要用于汇编

ld 主要用于链接

ar 主要用于创建静态库

ldd   可以用于查看一个可执行程序依赖的共享库

objcopy  将一种对象文件翻译成另一种格式,譬如将.bin转换成.elf、或者将.elf转换成.bin等

objdump  主要的作用是反汇编

readelf  显示有关ELF文件的信息

size  列出可执行文件每个部分的尺寸和总尺寸,代码段、数据段、总大小等,请参见后文了解使用size的具体使用实例

 

1.3 C运行库

    C语言标准主要由两部分组成:一部分描述C的语法,另一部分描述C标准库。C标准库定义了一组标准头文件,每个头文件中包含一些相关的函数、变量、类型声明和宏定义,譬如常见的printf函数便是一个C标准库函数,其原型定义在stdio头文件中。

    C语言标准仅仅定义了C标准库函数原型,并没有提供实现。因此,C语言编译器通常需要一个C运行时库(C Run Time Libray,CRT)的支持。C运行时库又常简称为C运行库。与C语言类似,C++也定义了自己的标准,同时提供相关支持库,称为C++运行时库

 

2、创建 C文件

    编辑的过程就是创建和修改 C 程序的源代码;其实在 Linux 上,最常用的文本编辑器是 Vim 编辑器,也可以采用 gedit 编辑器

3、编译

3.1 编译步骤

    C 程序的创建过程有五个基本步骤

步骤 命令 说明

编辑 vim {file_name}   编辑期间产生的文件,常称为源文件

预处理   gcc -E {file_name}.o -o {file_name}.i  生成 编译文件

编译 gcc -S {file_name}.o -o {file_name}.s  生成汇编文件

汇编 gcc -c {file_name}.o -o {file_name}.o  在 Linux 中这些文件的扩展名通常是 .o,在 Windows 下面这些文件的扩展名通常是 .obj 。如果编译成功就会生成一个文件,它与源文件同名。但扩展名为 .o 或者 .obj

链接 gcc -g -v -Wall {file_name}.o -o {file_name} 链接器将源代码文件中由编译器产生的各种对象模块组合起来,再从 C 语言提供的程序库中添加必要的代码模块,将它们组合成一个可执行文件;链接一旦成功,就会生成可执行文件,在 Windows 下面可执行文件的扩展名是 .exe,在 Linux 下面,可执行文件没有扩展名,但它的文件类型是可执行的

©著作权归作者所有:来自51CTO博客作者坚韧的石头的原创作品,如需转载,请注明出处,否则将追究法律责任

Linux 编译流程Linux C 语言


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP