Chinaunix首页 | 论坛 | 博客
  • 博客访问: 356820
  • 博文数量: 158
  • 博客积分: 52
  • 博客等级: 民兵
  • 技术积分: 613
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-27 11:58
文章分类

全部博文(158)

文章存档

2017年(1)

2016年(5)

2015年(19)

2014年(8)

2013年(13)

2012年(80)

2011年(32)

分类: C/C++

2013-10-29 09:46:52

原文地址:linux静态库的生成与使用 作者:txgc_wm

       Linux下类库主要有静态库和动态库两种库。其中,静态库在程序连接的时候会自 动的连接到程序里,所以一但编译完成,静态库也就不需要了。静态库通常以.a结尾。例如:libutil.a libuuid.a libz.a等。而动态库在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入,因此在程序运行时还需要动态库存在。通常以.so结尾。 如:libz.so。因此,静态库相对于共享库来说有更高的效率但是也要消耗更多的空间。值得注意的是,如果既有静态库又有动态库,在编译时默认的使用动 态库。本文主要讨论静态库的创建和使用。
1.在程序中使用动态库
(1)如果是标准C语言库我们可以不指定其库路径和库名称
(2)如果静态库处于/lib或/usr/lib下
gcc -o test test.c /usr/lib/libm.a 或 gcc -o test test.c -lm
他们的效果相同。-lm意味着命名为libm.a或libm.so的文件(注意Linux下的库文件都要以lib开头)。
(3)如果要指定静态库所在的路径
可以gcc test.c -L/usr/lib -lm
2.创建自己的静态库
(1) 编写库文件testlib.c
#include
void a()
{
printf("zyx\n");
}
(2)编写一个头文件用于声明我们使用的函数testlib.h
void a();
(3) 编译testlib.c
gcc -c testlib.c
(4) 用ar创建一个归档文件
ar crv libfirst.a testlib.o
生成libfirst.a
(5)在某些系统中还要为静态库生成一个内容表
ranlib libfirst.a
(6)然后就可以使用该静态库了
如:
[root@localhost Source]# vi zyx.c
[root@localhost Source]# gcc -o zyx zyx.c -I./lib -L./lib -lfirst
[root@localhost Source]# ./zyx
zyx
阅读(1004) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~