LINUX 静态库和动态库
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so libhello.a
1,生成库
第一步要把源代码编绎成目标代码。以下面的代码为例,生成上面用到的hello库:
/* hello.c */
#include
void sayhello()
{
printf("hello,world\n");
}
用gcc编绎该文件,在编绎时可以使用任何全法的编绎参数,例如-g加入调试代码等:
gcc -c hello.c -o hello.o
1).连接成静态库
现在我们创建libhello静态库文件:
$ gcc -c libhello -o libhello.o
$ ar rcs libhello.a libhello.o
其中ar中的rcs的意思是: r表明将模块
加入到静态库中,c表示创建静态库,s表示生产索引。
2).连接成动态库
gcc -fpic/fPIC -c source.c -o source.o
gcc -shared -Wl,-soname,your_soname -o library_name file_list library_list
说明:
-fpic或者-fPIC表明创建position independent code,这通常是创建共享库必须的。
-Wl 表明给链接器传送参数,所以这里-soname, library_name 为给链接器的参数。
-shared 表明是使用共享库
下面是使用a.c和b.c创建共享库的示例:
gcc -fPIC -g -c -Wall a
相关文档:
§1.PCI总线体系结构概述
PCI总线体系结构是一种层次式的(Hierarchical)体系结构。在这种层次式体系结构中,PCI桥设备占据着重要的地位,他将父总线和子总线连接在一起,从而使整个系统看起来像一颗倒置的树型结构。树的顶端是系统的CPU,他通过一个较为特别的PCI桥设备??Host/PCI桥设备和根PCI总线(root pci bus ......
一.前言
Linux的源码里,网络接口的实现部份是非常值得一读的,通过读源码,不仅对网络协议会有更深的了解,也有助于在网络编程的时候,对应用函数有更精确的了解和把握。
本文把重点放在网络接口程序的总体结构上,希望能作为读源码时一些指导性的文字。
本文以Linux2.4.16内核作为讲解的对象,内核源码 ......
http://inthirties.com:90/thread-1228-1-1.html
Linux
一、分区方式
1.创建swap分区,例如:
# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-13054, default 1):
Using default value 1
Last cyl ......
o: 编译的目标文件
-X/S3fm'SH]X0
a:
静态库,其实就是把若干o文件打了个包
k
z3noUV
pR0
so: 动态链接库(共享库)中国电子顶级开发网----最专业的电
子论坛、最专业的电子工程师博客L&??,z4i&G&G&S
V
r0^mk zF5o"xC1c0
lo:
使用libtool编译出的目标文件,其实就是在o ......