一次完整的编译,可以分为编译和链接两个阶段
编译就是.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文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)