国内大型餐饮网站建设,wordpress卡密会员,网站免费下载安装,苏州高端模板建站gcc 是一个将C语言文件变成可执行文件的工具。
在Linux中#xff0c;如果需要将一个C语言文件变得可以执行#xff0c;那么除了这个文件本身的内容是C语言编写的内容外#xff0c;还需要gcc这个编译工具进行编译才行。
gcc 使用的格式方法:gcc 要编译的文件 //在该代码下…gcc 是一个将C语言文件变成可执行文件的工具。
在Linux中如果需要将一个C语言文件变得可以执行那么除了这个文件本身的内容是C语言编写的内容外还需要gcc这个编译工具进行编译才行。
gcc 使用的格式方法:gcc 要编译的文件 //在该代码下gcc默认会将编译后的可执行文件改名为 a.out //但是这种编译方式是最新版本的老版本可能不支持所以在编译的过程中需要一点改变gcc 需要编译的文件 -stdc99//而若想要换一个名字使得编译出的文件不在是a.out 则需要使用以下代码gcc 需要编译的文件 -o 新名字 -stdc99 //或是gcc -o 新名字 需要编译的文件 -stdc99 另外用于编译c的g命令也可以编译C语言且g编译c的方法和gcc编译C语言的方法大致相同但不同的是gcc并不能编译c gcc的翻译编译过程
预处理(Pre-Processing)这个阶段主要处理源文件中的#indef、#include和#define预处理命令这里主要是把一些include的头文件和一些宏定义放到源文件中。
输入的是C语言的源文件输出 生成一个中间/预加载文件 *.i以 .i 结尾的文件这个阶段对应的gcc命令如下#gcc –E预处理 test.c源文件 -o test.i将结果生成的文件说明它通过对源文件test.c使用E选项来生成中间文件test.i
汇编(Assembling) 输入中间文件*.i 输出编译后生成汇编编语言文件*.s 这个阶段对应的gcc命令如下#gcc -S(汇编) test.i -o test.s汇编编语言文件 说明它通过对源文件test.c使用S选项来生成汇编文件test.s
编译(Compiling)
输入文件汇编文件*.s输出文件二进制机器代码*.o这个阶段对应的gcc命令如下#gcc -c编译 test.s -o test.o
* gcc -c 在功能上预处理、编译、汇编是3个不同的阶段 但gcc在实际操作时可以把这3个步骤合并为一个步骤来执行,即使用 -c选项 输入文件源码*.c文件输出文件二进制机器代码*.o这个阶段对应的gcc命令如下# gcc –c test.c -o test.o // -o指定了output_filename 链接(Linking)
输入文件二进制机器码*.o文件输出文件与其它的机器代码和库文件汇集成一个可执行的二进制代码文件无后缀这个阶段对应的gcc命令如下#gcc 没有选项符号 test.o example.o -o test 什么是链接
链接是库和程序的结合当一个语言被发明的时候是有一套标准的而这个库也就表示着语言的标准库。
当然库也分类在Linux中分为两种第一种是动态库通常以.so为后缀且链接一般默认使用的库就是动态库而另一种是静态库是以.a为后缀的并且在Linux中默认是没有静态库的存在所以需要自己安装。 安装静态库
sudo yum install -y glibc-static libstdc-static
静态库的使用
gcc -o 指定名字 链接的文件 -static 优缺对比 C动态库默认提供的gcc默认形成的可执行程序默认采用动态链接 动态库动态链接的优缺点 不能丢失节省资源 静态库静态链接的优缺点 一旦形成和库无关浪费资源