c语言 linux .o文件 不是ELF格式的 那这是什么文件?

c语言 linux .o文件 不是ELF格式的 那这是什么文件?,第1张

.o文件是编译过程中的一个中间文件

一次完整的编译,可以分为编译和链接两个阶段

编译就是.c生成.o,一般用gcc

链接就是.o生成elf,一般用ld

不过用gcc也可以完成链接,gcc会识别文件扩展名调用ld的

更细分,还有cpp的预编译,as的汇编编译

cpp gcc as ld这个是完整的一次编译过程

首先.o文件目标文件,也是ELF,.o就是汇编生成的,但是二进制文件不一定可执行

用.o生成可执行文件不叫汇编,叫链接,.o与运行所需的库进行链接最终生成可执行文件或者库。

*** 作的话就用gcc就好了,不同的参数执行不同的功能,比如说-o,-shared等,网上资料很多,用好gcc或者g++工具就ok

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

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

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

扩展资料:

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

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

参考资料来源:百度百科-.o文件


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存