Linux下gcc的使用以及库文件的链接

来源:互联网 发布:万网科技域名找回密码 编辑:程序博客网 时间:2024/04/28 22:57

Linux下程序的编译要经过预处理、编译、汇编、链接四个部分。预处理阶段处理如#include,#define等伪指令,生成的文件后缀一般为.i,对应的指令为:gcc -E sourcefile.c -o objectfile.i. 编译j将高级语言转换成汇编语言,生成的文件后缀一般为.s,对应的指令为:gcc -S sourcefile.i -o objectfile.s.汇编将汇编语言转换成机器码,生成的文件后缀一般为.o,对应的指令为:gcc -C sourcefile.s -o objectfile.o.链接将多个机器码文件,如库文件等汇集成一个可执行的二进制文件,默认生成为a.out.对应的指令为:gcc sourcefile.o -o objectfile.链接分为静态链接与动态链接两种。下面详细讲解。

静态链接直接将所用到的各个部分拼接起来作为所得到的最终文件。动态链接不是直接的进行拼接,最终得到的文件仍然不是完整的程序,而是保留了接口。动态链接所得到的可执行文件在执行的时候按照需要动态的加载用到的部分,与此不同的静态链接没有这个动态加载的过程,因为所有需要的部分已经包含在可执行文件里面了。这里可以看到动态链接生成的文件往往会小一些,因为可重用的部分已经独立出来作为库文件了,这也是构建大型软件所必须的。Windows中的.dll文件,linux中的.so文件都是动态链接库文件,可以被其他程序在运行时动态的加载进来。

0 0
原创粉丝点击