浏览 10750 次
锁定老帖子 主题:简介 Linux 静态与动态链接库
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-01
[作者] Wick 文章选取的例子非常简单,上手容易,只是为了讲述静态与动态链接库的生成和链接过 程,还有他们之间的区别。以下例子在 gcc 4.1.1 下顺利通过。 文件预览文件目录树如下,如你所见,非常简单。
代码#lt.c
# lt.h
#test.c
先看静态库首先做成静态库 liblt.a 。
再者,链接,这里指定了静态库的位置,注意文件顺序不可乱序。
这个时候再来看他的引用库情况。
动态库做成动态库 liblt.so 。
链接方法I,拷贝到系统库里再链接,让gcc自己查找
这里我们可以看到了 -llt 选项,-l[lib_name] 指定库名,他会主动搜索 lib[lib_name].so 。这个搜索的路径可以通过 gcc --print-search-dirs来查找。 链接方法II,手动指定库路径
这里的-B 选项就添加 /path/to/lib 到gcc搜索的路径之中。这样链接没有问题但是方法II 中手动链接好的程序在执行时候仍旧需要指定库路径(链接和执行是分开的)。需要添加系 统变量 LD_LIBRARY_PATH :
这个时候再来检测一下test程序的库链接状况(方法I情况)
恩,是不是比静态链接的程序多了一个 liblt.so ?恩,这就是静态与动态的最大区别,静 态情况下,他把库直接加载到程序里,而在动态链接的时候,他只是保留接口,将动态库与 程序代码独立。这样就可以提高代码的可复用度,和降低程序的耦合度。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |