从.c文件到 可执行 文件需要经历的过程static linking静态链接器的输入是一组可重定向文件,输出一个全链接的可执行目标文件。
目标文件有三种形式:
1. 可重定向目标文件:包含二进制代码和数据,可以在编译时和其他可重定向目标文件一起,得到可执行文件。
2. 可执行目标文件:包含二进制代码和数据,可以直接拷贝进内存进行执行。
3. 共享目标文件:一种特殊的重定向文件,可以被加载进内...
分类:
其他好文 时间:
2015-04-02 09:10:08
阅读次数:
172
大家都知道,写程序大体步骤为:1.用编辑器编写源代码,如.c文件。2.用编译器编译代码生成目标文件,如.o。3.用链接器连接目标代码生成可执行文件,如.exe。但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,...
分类:
其他好文 时间:
2015-03-18 11:59:59
阅读次数:
90
首先需要的就是下载VS2012的Update 4更新包,然后打开项目的属性页,在 配置属性—>平台工具集 选项中选择 Visual Studio 2012 - Windows XP (v110_xp),点击应用。 接着选择 链接器—>系统,此时可以看到所需的最低版本为5.01,即XP,同时在子系统选...
分类:
其他好文 时间:
2015-03-11 22:58:05
阅读次数:
143
编译mongodb-src-r2.2.2出现以下问题LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏这个是由于日志文件引起的,可以将项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”。或者将项目\属性\配置属性\链接器\...
分类:
编程语言 时间:
2015-03-10 21:20:44
阅读次数:
163
这是归属于链接器工具错误这一类。无法解析的外部符号“symbol”代码引用了链接器无法在库和对象文件中找到的内容(如函数、变量或标签)。可能的原因代码请求的内容不存在(例如,符号拼写错误或使用错误的大小写)。代码请求的内容错误(使用的是混合版本的库,一些库来自产品的一个版本,而其他则来自另一个版本)...
分类:
编程语言 时间:
2015-03-08 20:02:41
阅读次数:
358
在binutils工具集中,以下工具是我们在做嵌入式软件开发时需要掌握的:
as是汇编编译器,用于将汇编代码转换为目标文件。
add2line用户得到程序指令地址所对应的函数,以及函数所在的源文件名和函号;
ar用于创建和修改档案文件,以及从档案文件中抽取文件。静态库(.a文件)就是一种档案文件,需要用它生成和管理;
ld:链接器;
nm:用于列出程序文件中的符号及符号在内存中的(开始)...
分类:
其他好文 时间:
2015-03-07 17:13:55
阅读次数:
211
解决方案一:项目->属性->链接器->常规 下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/IN...
分类:
其他好文 时间:
2015-03-04 12:49:45
阅读次数:
141
本书讲述了一个真实编译器的开发过程,源语言是以C语言为蓝本,进行适当简化定义的一门新语言,称之为SC语言(简化的C语言),目标语言是大家熟悉的Intel x86机器语言。在本书中,读者将看到从SC语言定义,到SCC编译器开发的完整过程。本书介绍的SCC编译器,没有借助Lex与Yacc这些编译器自动生成工具,纯手工编写而成,更便于学习和理解。为了生成可以直接运行EXE文件,本书还实现了一个链接器。读完本书读者将知道一门全新的语言如何定义,一个真实的编译器、链接器如何编写。...
分类:
其他好文 时间:
2015-03-02 13:17:28
阅读次数:
190
从上大学开始学习编程至今,十年有余,这次头一回尝试总结一下平时最常见的工作的在计算机中的本质。从源代码到可执行文件,正常需要经过“预处理器(Preprocessor)”->“编译器(Compiler)”->“链接器(Linker)”这三个过程。如果是嵌入式系统,还需要经过“加载器(Loader)”加载到目标机器的存储器中才能运行。现在逐个解释每个过程的含义:
预编译器(Preprocessor)...
分类:
其他好文 时间:
2015-02-11 16:49:18
阅读次数:
140
本书讲述了一个真实编译器的开发过程,源语言是以C语言为蓝本,进行适当简化定义的一门新语言,称之为SC语言(简化的C语言),目标语言是大家熟悉的Intel x86机器语言。在本书中,读者将看到从SC语言定义,到SCC编译器开发的完整过程。本书介绍的SCC编译器,没有借助Lex与Yacc这些编译器自动生成工具,纯手工编写而成,更便于学习和理解。为了生成可以直接运行EXE文件,本书还实现了一个链接器。读完本书读者将知道一门全新的语言如何定义,一个真实的编译器、链接器如何编写。...
分类:
其他好文 时间:
2015-02-10 11:24:37
阅读次数:
246