c语言-----库
<---百草枯--->
qq:916923477<---->maooam
库
1、是库的概念:
|
把原文件(.c)编译成目标文件(.o),把目标文件简单组合放在一起
|
2、库的分类:
|
1、动态库:
动态库在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入,因此,在程序运行时还需要动态库存在,因此代码体积较小。
2、静态库:
静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。
|
3、静态库与动态库各自的优缺点:
3.1动态库:
|
动态库的优点:
体积小;
如果有多个程序共同调用了某动态库,在内存中只需要一份库代码。
动态库的缺点:
运行时依赖库,会影响实时性。
|
3.2静态库:
|
静态库的优点:
可移植性好,实时性会更好;
静态库的缺点:
体积较大;
如果有多个程序共同调用了某些静态库,在内存中需要多份代码。
运行:
编译的时候就连接进去了。
|
4、库的制作
4.1、静态库的制作
|
#CROSS_COMPILE = arm-linux-gnu- CC = $(CROSS_COMPILE)gcc AR = $(CROSS_COMPILE)ar $(CC) -g -O0 -Wall -c -o myls.o -myls.c (把myls改为你自己的文件名就ok了) $(AR) rcs libls.a lslib.o xxx.o yyy.o //创建静态库 ------------------------------------- $(CC) -o myls_static myls.c -L. libls.a (-L:GCC的编译选项:指定库的路径)
|
4.2、动态库的制作
|
#CROSS_COMPILE = arm-linux-gnu- CC = $(CROSS_COMPILE)gcc $(CC) -g -O0 -Wall -c -fPIC lslib.c -o lslib.o (-fPIC:必须编译选项,表示生产位置无关代码) $(CC) -shared -Wl,-o libls.so.1.0 lslib.o xxx.o yyy.o zzz.o -lc (libls.so.1.0)(-shared:必须编译选项,表示生成动态库) ln -s libls.so.1.0 libls.so ---------------------------------- $(CC) -o myls myls.c -L. -lls (-L. -lls 从当前路径下找libls.so动态库进行链接) --------------------------------------------- $(CC) -shared -Wl,-soname,libls.so -o libls.so.1.0 lslib.o -lc (生成动态库,-soname,libls.so 自动创建软链接)
|
附加:
查看库所依赖的其他库和路径:
LDD = $(CROSS_COMPILE)ldd
$(LDD) libls.so
posted on 2013-08-13 21:22 Jason-liang 阅读(325) 评论(0) 收藏 举报
浙公网安备 33010602011771号