C语言中.o与.a是什么意思?

C语言中.o与.a是什么意思?,第1张

.o文件是链接文件,.a是静态库文件,靠.o文件生成。

.o 就是object, 也就相当于windows下编译的obj文件, 俗称目标文件。

.a 就是archive, 也就相当于windows的VC下编译的lib文件, 俗称静态库文件。

.a is an archive of code: compiled but not linked. You would link statically with it during your program's final link step.

(.a 是编译了但尚未链接的 obj 文件的 集合体。静态链接可用它。)

.lib can be either the same as .a, or a magical so-called "import library": a thin placeholder which causes you to require a .dll at runtime.

(.lib 可以就是 .a, 也可以是 所谓的 输入库,当使用 动态链接时,要用它, 动态链接得到的exe程序,运行时 还要用到 .dll ) .

.a和.so文件都是函数库文件。库是一组预先编译好的函数的集合,库文件的名字以lib开头,随后的部分指明这是什么库(例如c代表C语言库,m代表数学库)。

.a代表的是静态函数库,当同时运行多个程序并且都使用到同一个函数库的函数时,内存中就会有同一函数的多份副本,会消耗大量宝贵的内存。

.so是共享函数库,可以克服.a函数库的不足。当一个程序使用共享函数库时,程序本身不再包含函数代码,而只是引用共享代码,当实际调用时,共享库才被加载到内存中。

.a文件类似于Windows下的.lib文件,.so文件类似于Windows下面的.dll文件,这样就好理解了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11573686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存