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
相关文档:
编译并安装Busybox 1.15.3到L inux2.6.11.1,启动系统
进入shell 提示: ./ash : can't access tty; job control turned off.
分析发现
/etc/inittab文件中有一行:
::askfirst:/bin/ash
这在busybox 1.2.1运行正常
修改为
tty1::askfirst:/bin/ash
后正常. ......
在Linux系统中,uptime、top等命令判断一个系统的负载。load average分别记录了1、5、15分钟的系统平均负载。
load average 对 performance 的影响?
1. 如果load average/CPU数量 < 3, performance is good
2. 如果load average/CPU数量 > 5, performance is very bad
......
o: 编译的目标文件
-X/S3fm'SH]X0
a:
静态库,其实就是把若干o文件打了个包
k
z3noUV
pR0
so: 动态链接库(共享库)中国电子顶级开发网----最专业的电
子论坛、最专业的电子工程师博客L&??,z4i&G&G&S
V
r0^mk zF5o"xC1c0
lo:
使用libtool编译出的目标文件,其实就是在o ......