﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Stone</title><link>http://www.blogjava.net/Stone5421/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 05:04:11 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 05:04:11 GMT</pubDate><ttl>60</ttl><item><title>《c primer plus》读书笔记——源代码文件、目标代码文件、库文件、可执行文件</title><link>http://www.blogjava.net/Stone5421/archive/2007/04/17/111358.html</link><dc:creator>Stone</dc:creator><author>Stone</author><pubDate>Tue, 17 Apr 2007 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/Stone5421/archive/2007/04/17/111358.html</guid><wfw:comment>http://www.blogjava.net/Stone5421/comments/111358.html</wfw:comment><comments>http://www.blogjava.net/Stone5421/archive/2007/04/17/111358.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Stone5421/comments/commentRss/111358.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Stone5421/services/trackbacks/111358.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;我们知道从源文件到可执行文件，C分为两步：编译和链接。<br><br><br>&nbsp;&nbsp;&nbsp;<strong>1&gt;编译<br><br></strong>&nbsp;&nbsp;&nbsp;编译就是把源代码转换为中间代码。当然了，存放中间代码的文件就叫中间文件。<br>&nbsp;&nbsp;&nbsp;那么中间文件，或者说中间代码是由什么构成呢？其形式有多种。但是我只知道一种：就是由源代码转换的机器码组成，这种中间文件叫做目标文件。<br>&nbsp;&nbsp;&nbsp;虽然它和可执行文件一样都是有机器码组成，但是它并不能直接运行。因为它比可执行文件少了两个东东：启动代码（start-up code）和库函数。<br><br><br>&nbsp;&nbsp;&nbsp;<strong>2&gt;链接<br><br>&nbsp;&nbsp;&nbsp;</strong>链接就是把目标代码、相应操作系统的启动代码、库函数三者结合起来行成可执行文件。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>（启动代码）：</strong>此代码相当于你的程序和操作系统之间的接口。不同操作系统处理程序的方式不同，所以它们的启动代码也不同。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>（库）</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>：</strong>几乎每个c函数都会引用到库函数，目标文件中只有相应函数的引用声明，并没有相应代码。<br><br><br>&nbsp;&nbsp;&nbsp;这种分两步走的做法便于程序的模块化。你可以分别编译各个模块，然后把编译过的模块链接起来。这样如果改变其中一个模块的话，只需要重新编译这个模块，而不需要编译其他模块儿。</span> 
<img src ="http://www.blogjava.net/Stone5421/aggbug/111358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Stone5421/" target="_blank">Stone</a> 2007-04-17 17:22 <a href="http://www.blogjava.net/Stone5421/archive/2007/04/17/111358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>