2 lcz2017 lcz2017 于 2016.09.20 17:50 提问

c语言中的编译和链接,编译就是把源代码生成二进制代码,但是链接是干什么的,请高手指教。

语言中的编译和链接,编译就是把源代码生成二进制代码,但是链接是干什么的,请高手指教。

2个回答

caozhy
caozhy   Ds   Rxr 2016.09.20 20:34

链接就是把程序装配起来,一个可执行文件不仅仅是机器代码,而是一个完整的文件,这个文件包含一些描述性的信息和数据,比如它调用哪些系统库,它的入口地址是什么,它如何分配静态存储区、它需要多少内存运行,它包含的额外的数据等等。
不同的操作系统,可执行文件需要的额外的信息不同,比如linux、windows、dos等等有各自的格式。编译器只是产生机器代码,而链接器才能把机器代码按照操作系统约定的格式装配起来。

waterhexuan
waterhexuan   2016.09.20 19:02

一个程序 由很多单元组成 编译只是 把每个单元变成二进制 链接是把这些单元组成一个完成的程序

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言编译和链接和加载
### http://www.cnblogs.com/oubo/archive/2011/12/06/2394631.html ###     一、概述 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码
c语言中编译链接的整个过程
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。       编译           编译是读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代
GCC编译链接到生成可执行
一、g C和C++编译器是集成的,编译一般分为四个步骤: 预处理(preprocessing) 编译(compilation) 汇编(assembly) 连接(linking) 源文件后缀名的一些含义和后续的操作: .c       C源程序        预处理,编译,汇编 .C      C++源程序        预处理,编译,汇编 .cc     
源代码文件到二进制可执行文件的过程
=== .c   === 预处理 -》.c (源文件) 编译 -》.s/asm (汇编程序) 汇编 -》.o/obj 目标程序(二进制文件) 链接 -》.exe可执行程序 (二进制文件) (1) 为什么要生成汇编,而不是直接从源文件编译成机器指令(二进制代码)? 首先,汇编语言作为机器指令的助记符,调试以及优化起来都会比较方便; 其次,汇编到机器指令的过
共享库的编译、链接和运行
1、什么是共享库     共享库的代码是可以在多个应用程序之间共享的,也就是如果有多个程序(或者叫进程)调用相同的函数,可以把这些共同的函数提取出来制作成共享库。这样在运行时,内存中只需要拷贝一份就可以了。 2、共享库与静态库的区别     静态库就是目标文件的简单打包,在编译过程中调用静态库,就会将涉及到的目标文件拷贝进可执行文件中,然后链接程序进行重定位。此后,程序的运行、调试都
C语言程序的编译、链接具体过程及Linux环境下的具体实例
我们知道一个程序从编写完成到生成可执行文件分为预处理、编译、汇编、链接,最后再生成可执行文件。预处理阶段,预处理器主要做四部分工作,分别是:头文件展开、宏替换、去注释以及条件编译。(1)头文件展开就是编译器会根据字符#开头的命令去读取相应的系统文件或者自定义文件, 并把相应的文件直接插入到当前程序代码中,这就完成了头文件的展开。(2)宏替换就是将程序员自定义的宏变量、宏函数等直接替换,如:#defi
C语言学习笔记——关于 .obj 文件的理解
【编译】:根据当前源代码编译成二进制目标文件(即.obj文件) 【链接(link)】:将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件)。 一个现代【编译器】的主要工作流程如下: 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连
【C语言】编译链接的详细过程
相信大家在学习C语言时,肯定会有这么一个问题,计算机把一段程序转化为能识别的二进制机器语言的过程是什么?        大体的来讲需要经历四个过程:预处理,编译,汇编,链接。接下来我会给大家一一说明。 首先预处理过程所做的操作是 进行程序的宏替换,去注释,头文件按照路径展开,以及条件编译。 接着编译操作完成把C语言转成汇编语言。 再接下来,汇编操作完成把汇编语
编译(Compile)、连接(Link)都做了什么事情
一个C程序的生成要经历以下步骤:  1.编写文本代码,生成C或Cpp文件,这时候它还是文本的;  2.编译,就是Compile,由C编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通过。如若无错,则生成中间代码,扩展名为obj,此时它便是二进制的了;  3.连接,在汇编里称Link,在C里叫生成,即Build,它的作用是生成可执行的exe文件。由于一个程序的
使用GCC生成无格式二进制文件(plain binary files)
<br />使用C语言生成一个二进制文件<br />使用自己喜欢的文本编辑器写一个test.c:<br />int main()<br />{<br />}<br />再使用如下命令编译:<br />gcc –c test.c<br />ld –o test –Ttext 0x0 –e main test.o<br />objcopy –R .note –R .comment –S –O binary test test.bin<br />最后生成的二进制文件是test.bin,可以使用你喜欢的反汇编工具看