易截截图软件、单文件、免安装、纯绿色、仅160KB

linux下的静态库和动态库解析


  Liux 下静态库和动态库的浅析 收藏
本文主要解决以下几个问题 
1 为什么要使用库? 
2 库的分类 
3 创建自己的库 
或许大家对自己初学linux时的情形仍记忆尤新吧。如果没有一个能较好的解决依赖关系的包管理器,在linux下安装软件将是一件及其痛苦的工作。你装 a包时,可能会提示你要先装b包,当你费尽心力找到b包时,可能又会提示你要先安装c包。我就曾被这样的事搞的焦头烂额,至今一提起rpm仍心有余悸,头 皮发麻。说是一朝被蛇咬,十年怕井绳怕也不为过。 
linux下之所以有这许多的依赖关系,其中一个开发原则真是功不可没。这个原则就是:尽量不重复做别人已经做过的事。换句话说就是尽量充分利用别人的劳动成果。 
这就涉及到如何有效的进行代码复用。 
1 为什么要使用库? 
关于代码复用的途径,一般有两种。 
粘贴复制 
这是最没有技术含量的一种方案。如果代码小,则工作量还可以忍受,如果代码很庞大,则此法不可取。即便有人原意这样做,但谁又能保证所有的代码都可得到呢? 
而库的出现很好的解决了这个问题。 
库,是一种封装机制,简单说把所有的源代码编译成目标代码后打成的包。 
那么用户怎么能知道这个库提供什么样的接口呢?难道要用nm等工具逐个扫描? 
不用担心,库的开发者早以把一切都做好了。除了包含目标代码的库外,一般还会提供一系列的头文件,头文件中就包含了库的接口。为了让方便用户,再加上一个使用说明就差不多完美了。 
2 库的分类 
2.1 库的分类 
根据链接时期的不同,库又有静态库和动态库之分。 
静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。 
有别于静态库,动态库的链接是在程序执行的时候被链接的。所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用。(TODO:链接动态库时链接阶段到底做了什么) 
2.2 静态库和动态库的比较 
链接静态库其实从某种意义上来说也是一种粘贴复制,只不过它操作的对象是目标代码而不是源码而已。因为静态库被链接后库就直接嵌入可执行文件中了,这样就带来了两个问题。 
首先就是系统空间被浪费了。这是显而易见的,想象一下,如果多个程序链接了同一个库,则每一个生成的可执行文件就都会有一个库的副本,


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

linux 学习计划

解答:学习Linux的四个步骤
假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过
我想大概可以分为4个阶段,水平从低到高
从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码
其中学习linux常用命令时就要学会自己编译内核,优化系统,调 ......

下载linux系统到开发板

利用dnw及串口终端下载安装linux到开发板时,要先设成Nor Flash 启动,步骤如下:
1) 对Nand Flash进行分区
2) 安装bootloader
3) 安装内核文件
4) 安装文件系统
下载完毕要先拔下usb接线,若不取下来有可能导致在系统复位时,电脑会死机。 ......

linux开机启动脚本的顺序


如果服务器重启之后需要手工开启许多服务、工作及以后的维护相对比较繁琐、特地总结了下linux下开机自动启动脚本所涉及的知识和方法、如下:
1、相关基础知识点
   1)redhat的启动方式和执行次序是:
      加载内核
      执行init程序
 &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号