导航:首页 > 源码编译 > 编译后链接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的作用是相关的资料

热点内容
c语言游戏编程教程 浏览:998
数控铣床编程图纸 浏览:820
口头指派或命令 浏览:891
压缩机经常碰有没有毒 浏览:96
iphone如何批量添加app到主屏幕 浏览:682
国内云服务器厂商价格实惠 浏览:568
php操作mysql函数 浏览:578
压缩图片做qq头像 浏览:670
java播放的视频文件 浏览:794
java编写的俄罗斯方块 浏览:675
编译器和应用软件的关系 浏览:289
外网如何进服务器地址 浏览:851
单片机液晶电路 浏览:977
数控冲床编程与操作 浏览:683
设计作品pdf 浏览:880
怎么下载安卓九框架 浏览:244
phpzendstudio下载 浏览:255
单片机漏极开路 浏览:990
android滑动日期 浏览:349
大神app如何发长文 浏览:433