导航:首页 > 源码编译 > 编译后链接Link的作用是

编译后链接Link的作用是

发布时间:2024-11-10 23:48:47

⑴ c++ 编译 链接是怎么回事

compile和link是大多数语言从原代码生成可执行程序的两个步骤。

之所有有这两个步骤因为几乎任何一个程序都不是用一个原文件写出来的。compile是先针对单独原文件进行处理。link是把compile处理的结果组合成一个完整的可执行文件。

其实C/C++完全也可以一步成型,不需要compile和link两个步骤,但是那样的后果就是:一,每次生成可执行程序,必须翻译全部源代码;二,C语言的执行库(printf, scanf这些)必须都以源代码形式存在。这怎么样也说不过去吧。

另外头文件不属于compile和link过程,头文件是预编译过程的文件。

C/C++语言的完整编译过程是

一、预编译

处理#define #if #include这类#开头的语句,这些称为预编译指令。这个过程中会把.h文件和.c/.cpp文件组合成最终交给compile过程的原文件。这个原文件是不包含任何#开头的语句的。所有#define定义的宏也会被替换。

二、编译
把上面那个原文件编译成.o或者VC里是.obj文件。这个文件保存了机器码化的函数、函数的描述、全局变量的描述、乃至段的描述等等。

三、连接
把可执行程序需要的所有的编译过程产生的.o或者.obj文件组合到一起。(这里也包括.lib文件,.lib文件件本质上就是打包的.obj文件集合)。另外连接过程还会组合一些其他数据,比如资源、可执行文件头等等。

⑵ 为什么我用gcc编译c程序到最后无法自动生成一个exe程序

gcc 是 Linux 系统下面的 C 语言编译器。它和 WINDOWS 系统下面的 Microsoft Visual Studio C++ 6.0 不同,在 WINDOWS 系统下面对任何的一个源程序,经编译、链接、到最终生成的所有可执行程序必定都是以 *.exe 结尾的,*.exe 是 WINDOWS 系统下面的可执行程序的后缀;而 gcc 对 C 语言进行编译,并没有规定可执行程序的具体名字到底是什么。举例如下:
$gcc my_program.c <cr>
如果在命令行中,没有带任何参数的话,如果 C 语言源程序没有任何语法错误的话,那么生成的缺省的可执行文件就是:a.out;
$gcc my_program.c -o my_runfile <cr>
如果在命令行中,指定:-o 参数,代表对 my_program.c 进行编译后,生成的可执行文件名为:my_runfile。

同理,在进行命令行编译过程中,只要指定了 -o 参数,那么你后面的可执行文件名,就随便由你自己决定了,这个就没有一定之规了。

阅读全文

与编译后链接Link的作用是相关的资料

热点内容
地铁逃生服务器已满什么意思 浏览:815
androidstudio工程名 浏览:427
下载高清图片用什么app 浏览:936
什么app可以买裙子 浏览:591
大商创源码210 浏览:291
phpwhile跳出循环 浏览:245
怎么压岁文件夹 浏览:889
帮人解压的说说 浏览:740
登记本解压预约流程 浏览:508
springboot加载配置文件源码 浏览:124
程序员旅行箱 浏览:235
程序员月薪8万个税 浏览:510
汽车App深度检测是什么 浏览:190
python支持的平台 浏览:288
串口命令打印 浏览:704
神盾加密磁盘评价 浏览:92
服务器浏览记录能看到什么 浏览:116
她说程序员不懂浪漫 浏览:1004
反甲被动算法 浏览:102
破解NFC二级加密 浏览:301