1、C语言可以编译的文件有什么?
C语言可以编译成以下几种类型的文件:1. 可执行文件(Executable File):编译后的二进制机器代码,可以直接在操作系统上运行。2. 目标文件(Object File):编译后的机器代码的未链接版本,需要链接器将多个目标文件链接成可执行文件。3. 静态库文件(Static Library):包含在C语言程序中可能用到的函数和符号的二进制代码,可以在程序编译阶段被链接到可执行文件中。4. 共享库文件(Shared Library):与静态库类似,但是在程序运行时由操作系统动态加载并链接。5. 动态链接库文件(Dynamic Link Library):Windows操作系统特有的共享库文件类型,以.dll文件扩展名结尾。6. 头文件(Header File):包含C语言程序的声明和常量等信息,不会被编译,而是在编译过程中被包含到源代码中使用。7. 预编译文件(Precompiled Header File):在编译阶段预编译的头文件,用于加速编译过程。
可以编译的文件是源文件,头文件,宏等。
2、C语言程序编译后产生哪些类型的文件?这些文件的作用是什么?
1、以GCC编译器为例,可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc -P abc.c
第二步由源程序生产汇编语言代码。
gcc -S abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o
2、目标代码包括机器码和符号表(函数及变量名)。连接器的主要作用是通过符号表在库文件和其他模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。
3、为什么说c是编译型语言?
1、C语言不能被计算机直接理解,需要编译后才能执行。
2、计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
3、编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
4、c语言编译的每个函数都可以进行独立的编译并执行吗?
1、可以单独进行编译。编译器自带的函数库就是这样的。
2、C语言中的函数可以单独进行编译,编译为目标文件,要链接成可执行文件时,需要主函数以及库。编译是指把程序语句翻译为机器代码,对于C语言就是把.c文件翻译为.obj文件。此外,必须要有main函数的才可以完成连接为exe文件。
5、c语言中编译后得到的目标文件为什么不能直接运行,必须连接后才能运行?
一编译单元(一个c文件)就会得到一个目标文件,而最终程序是一个EXE。所以需要链接。同时链接需要按照操作系统的可执行文件格式要求组织。
文章来自网络整理,侵权请联系删除.本文链接:https://www.vanillaforums.cn/n/9176.html