<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[Windows与Linux系统下的库文件介绍]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 25 Oct 2010 14:28:42 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	什么是库 <br/> <br/>库文件是一些预先编译好的函数的集合，那些函数都是按照可再使用的原则编写的。它们通常由一组互相关联的用来完成某项常见工作的函数构成，从本质上来说库是一种可执行代码的二进制形式，可以被操作系统载入内存执行。 <br/> <br/>无论在Windows平台还是在Linux平台下都存在大量的库，但由于Windows和Linux的本质不同，因此二者的库的二进制是不兼容的。<br/> <br/>库的分类 <br/> <br/>Windows下的库有两种：静态库(.lib)和动态链接库(.dll)。 <br/>Linux下的库有两种：静态库(.a)和共享库(.so)。 <br/>Linux下的静态库的名字一般为libxxxx.a，其中xxxx是该lib的名称 <br/>Linux下的动态库的名字一般为libxxxx.so.major.minor，xxxx是该lib的名称，major是主版本号，minor是副版本号。 <br/> <br/>Windows下的库与Linux下的库的异同 <br/> <br/>Linux的共享库(.so)就象Windows的动态链接库(.dll)，它里面包含有很多程序常用的函数。为了方便程序开发和减少程序的冗余，程序当中就不用包含每个常用函数的拷贝，只是在需要时调用共享库中常函数即可。这种方式我们称之为动态链接(Dynamically Linked)。而有时我们不希望叫程序去调用共享库的函数，而是把库函数代码直接链接进程序代码中，也就是说，在程序本身拥有一份共享库中函数的副本。这种方式我们称之为静态链接（Statically Linked）。 <br/> <br/>所以，简单的讲静态库和共享库(动态库)的不同点在于代码被载入的时刻不同。 <br/> <br/>静态库的代码在编译过程中已经被载入可执行程序，因此体积较大。 <br/> <br/>共享库的代码是在可执行程序运行时才载入内存的，在编译过程中仅简单的引用，因此代码体积较小。 <br/> <br/>Windows下的动态链接库(.dll)与Linux下的共享库(.so)的差别 <br/> <br/>.dll文件事实上和.exe文件一样，同属 PE 格式的执行文件。对于隐式的引用外部符号，需要把外部符号所在的位置写在PE头上。PE加载器将从PE头上找到依赖的符号表，并加载依赖的其它.dll文件。 <br/> <br/>而在Linux 上并非如此！.so文件大多为elf执行文件格式。当它们需要的外部符号，可以不写明这些符号所在的位置。也就是说，通常.so文件本身并不知道它依赖的那些符号在哪些.so里面。这些符号是由调用dlopen的进程运行时提供的。 <br/> <br/>我们在Windows下做一个.dll文件时还需要携带一个.lib文件；而在Linux下一般只需要有相应的头文件就够了。对于编写新的.so，找不到的符号可以就让它在那里，直到最终执行文件来把所有需要的符号联合到一起。windows 可以存在一个.dll对另一个.dll的隐式依赖；而Linux下一般不需要让.so和.so有隐式依赖关系。
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] Windows与Linux系统下的库文件介绍]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>