在linux下创建库函数
Linux下创建库函数
By luster
luster@linuxaid.com.cn
2001-8-16
本文件主要参考Program Library HOWTO,
作者是luster(hwang@ustc.edu),
所有非商业目的的再次发行本文件都是允许的,不过请保留作者信息和本版权声明。本文件首先在www.linuxaid.com.cn发布。
1. 介绍
使用GNU的工具我们怎么在Linux下创建自己的程式函数库?一个“程式函数库”简单的说就是个文件包含了一些编译好的代码和数据,这些编译好的代 码和数据能在事后供其他的程式使用。程式函数库能使整个程式更加模块化,更容易重新编译,而且更方便升级。
程式函数库可分为3种类型:静态函数库 (static libraries)、共享函数库(shared libraries)和动态加载函数库(dynamically loaded libraries)。
静态函数库是在程式执行前就加入到目标程式中去了;而共享函数库则是在程式启动的时候加载到程式中,他能被不同的程式共享;动态加载函数库则能在程式 运行的所有时候动态的加载。实际上,动态函数库并非另外一种库函数格式,差别是动态加载函数库是怎么被程式员使用的。后面我们将举例说明。
2. 静态函数库
静态函数库实际上就是简单的一个普通的目标文件的集合,一般来说习惯用“.a”作为文件的后缀。能用ar这个程式来产生静态函数库文件。Ar 是archiver的缩写。静态函数库目前已不在像以前用得那么多了,主要是共享函数库和之相比较有非常多的优势的原因。慢慢地,大家都喜欢使用共享函数 库了。不过,在一些场所静态函数库仍然在使用,一来是保持一些和以前某些程式的兼容,二来他描述起来也比较简单。
静态库函数允许程式员把程式link起来而不用重新编译代码,节省了重新编译代码的时间。不过,在今天这么快速的计算机面前,一般的程式的重新编译也 花费不了多少时间,所以这个优势已不是像他以前那么明显了。静态函数库对研发者来说还是非常有用的,例如你想把自己提供的函数给别人使用,不过又想对函数 的原始码进行保密,你就能给别人提供一个静态函数库文件。理论上说,使用ELF格式的静态库函数生成的代码能比使用共享函数库(或动态函数库)的程式运行 速度上快一些,大概1-5%。
创建一个静态函数库文件,或往一个已存在地静态函数库文件添加新的目标代码,能用下面的命令:
ar rcs my_library.a file1.o file2.o
这个例子中是把目标代码file1.o和file2.o加入到my_library.a这个函数库文件中,如果my_library.a不存在 则创建
相关文档:
内核版本:2.6.28
linux如何利用伙伴系统,slab分配器分配内存,用这些方法得到的内存在物理地址上都是连续的, 然而,有些时候,每次请求内存时,系统都分配物理地址连续的内存块是不合适的,可以利用小块内存“连接”成大块可使用的内存.这在操作系统设计中也被称为 “内存拼接”,显然,内存拼接在需要较大内 ......
1.编译安装libevent
2.编译安装Memcached
在我写这篇文章的时候,libevent已经有1.4.8稳定版
,Memcached Server已经有1.3.0版本
。本文就以这两个版本为例,我的gcc是gcc version 3.3.4 (Debian 1:3.3.4-7)。
首先安装libevent
wget http://www.monkey.org/~provos/libevent-1.4.8-stable.tar.gz
tar zxvf libeven ......
域和地址族
有一个很恰当的比喻说明套接口编程,套接口就好比电话,而电话网中的电话号码就好像套接口地址。说明套接口可以用特定的地址来标示自己。并不是所有的套接口都需要地址,比如无名套接口就不需要地址,例如函数socketpair(2)就生成了一对互相可以连接但是却没有地址的套接口。书中比喻说就 ......
(1)dev
是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这一点和我们常用的windows,
dos操作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个 ......
现在在做嵌入式linux下的USB自动挂载。
在系统启动的时候,首先加载USB驱动。加载过程中出现如下错误:
usb 1-2: new full speed USB device using hisilicon-ohci and address 2
usb 1-2: device descriptor read/64, error -110
usb 1-2: device descriptor read/64, error -110
usb 1-2: new full speed USB d ......