Linux下gcc的使用以及库文件的链接
2016-03-03 20:22
435 查看
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文件都是动态链接库文件,可以被其他程序在运行时动态的加载进来。
-C sourcefile.s -o objectfile.o.链接将多个机器码文件,如库文件等汇集成一个可执行的二进制文件,默认生成为a.out.对应的指令为:gcc sourcefile.o -o objectfile.链接分为静态链接与动态链接两种。下面详细讲解。
静态链接直接将所用到的各个部分拼接起来作为所得到的最终文件。动态链接不是直接的进行拼接,最终得到的文件仍然不是完整的程序,而是保留了接口。动态链接所得到的可执行文件在执行的时候按照需要动态的加载用到的部分,与此不同的静态链接没有这个动态加载的过程,因为所有需要的部分已经包含在可执行文件里面了。这里可以看到动态链接生成的文件往往会小一些,因为可重用的部分已经独立出来作为库文件了,这也是构建大型软件所必须的。Windows中的.dll文件,linux中的.so文件都是动态链接库文件,可以被其他程序在运行时动态的加载进来。
相关文章推荐
- linux .tar.xz 文件解压和压缩
- Linux Makefile伪目标
- Linux软件包管理之源码安装
- linux C语言 SOCKET 服务器断开导致客户端SEND崩溃问题解决办法
- Linux makefile 编写详细教程,浅显易懂
- CentOS 的使用(二)
- 进程间通信管道进阶篇:linux下dup/dup2函数的用法
- Linux统计某文件夹下文件、文件夹的个数
- Linux软件包管理之yum
- linux
- Input Device Configuration
- Linux软件包管理之rpm
- osgi在linux下的应用
- Linux 利用gdb进行程序奔溃定位
- Centos rsyslog远程日志服务配置
- linux下tar gz bz2 tgz z等众多压缩文件的压缩与解压方法
- linux下使用编译使用GeoIp 出现问题
- 使用linux的alternatives管理多版本的软件
- linux命令格式--tar命令
- 最简版QQ~~牛逼的Linux Netcat 命令