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

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

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

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

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

o: 编译的目标文件 a: 静态库,其实就是把若干o文件打了个包 so: 动态链接库(共享库)  lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息  la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息。

我们通常把一些公用函数制作成函数库,供其它程序使用,函数库分为静态库和动态库两种,静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库,动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,在创建函数库前,我们先来准备举例用的源程序,并将函数库的源程序编译成.o文件。

C语言中o文件是链接文件,a是静态库文件,靠o文件生成。

*.a文件,是*nix系统的静态链接库,是多个*.o文件合在了一起。里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、模式、时间戳、属主、组等属性都保留在库文件中。

.o文件就是对象文件,是可重定向文件的一种,通常以ELF格式保存,里面包含了对各个函数的入口标记,描述,当程序要执行时还需要链接(link).链接就是把多个.o文件链成一个可执行文件。

在win平台下,用来链接的重定向文件也可为PE格式的.obj文件

当多种编程语言希望混合编译时,就可以通过分别编译成.o文件,再链接(link)成可执行文件。

.o文件

以 Code::Blocks ,win系统为例,我们每次写好一段程序,构建并运行以后都会在存储该程序的文件夹里自动生成一个 *.o 文件和一个*.exe 文件。

而后者是可以直接运行的(双击即可打开)。当写好了一个大的程序的各个部分以后,就可将所有的*.o 文件链接成一个可执行文件。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存