您的位置:首页 > 编程语言 > C语言/C++

c/C++中后缀obj/o lib/a dll/so bin文件意义

2016-03-16 22:39 253 查看
借鉴http://www.cnblogs.com/skynet/p/3372855.html

在我们日常编译过程中,常遇到各种后缀的文件,诸如题目中的,加上编译 链接,预处理等等乱七八糟很混乱,今天有幸总结了下。记下来防止以后忘了。

首先讲一下程序编译连接的过程

首先,由编辑器产生源文件。诸如.c .cpp的是源文件,纯文本格式。还有.h文件,是头文件,为用得比较多的函数什么的,类,放在一起,方便一个include就可以解决。此外头文件一般用一个同名的cpp放比较好,这样主要好辨识么。

这样原本文件就凑够了。接下来就是预处理什么的。预处理主要是宏替换,或者头文件替换。吧include的地方替换为头文件里。把#开头的地方用员意替换。

接着就是编译。把源文件.cpp编译成为。obj文件,在linux下就是.o文件。此时对于头文件里的东西只有声明而没有实现。实现是单独进行的。

然后进行连接。原本main.obj里的声明和 **.h对应**.obj进行连接。这样就可以进行正常运行了吧。链接就是把各种目标文件.obj/.o连接起来生成可执行文件。

注意在这儿,对于用的比较多的文件。比如说某一个函数或者类的实现在多个地方都可以用到。但是源文件只有一个地方。因此我们可以单独生成一个库文件。库文件就是用的比较多的文件。这样库文件就出现了。

库文件分为静态库文件lib/a和动态库文件dll/so文件。前面为windows下,后面为linux下的后缀名。库文件是从目标文件.obj/.o打包压缩而来。lib/a是指在连接的时候直接把文件加入到可执行程序中。而dll是指在运行时runtime才加载的库文件。一般dll都有一个对应lib引入。dll省空间但是调用,和目录容易出错。lib费空间但是调用方便。

bin文件则不一定是什么东西。是bin是binary缩写。二进制文件。具体是不是可执行文件那就不一定了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编译