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

热点内容
前期副图选股源码 浏览:288
招聘程序员5年后感觉很萌新 浏览:612
光辉源码 浏览:514
用大米解压球 浏览:447
搭建音乐网站需要什么服务器 浏览:730
最新代挂网模板源码 浏览:583
数据结构算法与课程设计报告 浏览:463
钉钉程序员起飞视频大全 浏览:554
薯仔视频推荐算法 浏览:188
为什么原生安卓bug少 浏览:563
python未知编码怎么解码 浏览:968
at命令的作用 浏览:136
安卓手机之间如何传送高清视频 浏览:97
斐讯交换机命令 浏览:712
酒店压缩毛巾多少钱 浏览:182
java日期和时间 浏览:636
一周学会php接案 浏览:283
如何导入通讯录到新手机安卓 浏览:358
思科的ftp服务器如何使用 浏览:699
php后台管理系统教程 浏览:124