BBS水木清华站∶精华区
发信人: hellguard (小四), 信区: Unix
标 题: Re: 如何生成静态连接库?
发信站: BBS 水木清华站 (Fri Nov 12 10:43:42 1999)
木棉的兄弟给咱解决了,转贴如下,这样就不让后来的兄弟走弯路
发信人: Loafer (木棉浪子), 信区: Unix
标 题: Re: 如何生成静态链接库
发信站: 华南网木棉站 (Thu Nov 11 21:26:08 1999), 转信
静态库及动态库的建立
UNIX系统及各种软件包为开发人员提供了大量的库文件。但一般情况下这些库文件还
不能足以满足用户的所有需求。开发人员大多会根据他们自己的开发、研究要求编写
出许多函数。对于这些函数,如果都用在命令行中指定源文件的方法同调用它们的程
序链接起来,虽然也是可以的,但也有一些缺点:
.....
下面来看看如何生成静态库。
我们知道静态库也称档案库,在此档案文件中实际上是收集了一系列的目标文件。这
些目标文件就是由cc(gcc)函数的源代码编译生成的。因此,静态库的生成方法实际上
可以分成两步:
1.将各函数代码所在的源文件编译成目录文件。例如,对于myfunc.c,可以用如下命令
将其编译成目标文件:
gcc -c myfunc.c
当然在有多个源文件时,只需在gcc 命令行中将其分别列上就可以了。
经此一步我休养将能够得到各源文件的目标文件。对上例,将得到myfunc.o
2.将各目标文件收集起来放到一个静态库文件中。这主要借助于ar命令完成,如:
ar r ~/lib/libtest.a myfunc.o
建立动态链接库、并不需要用到其他的工具,借助于gcc命令即可完成。此时需在命令
行中加上-K PIC和-G这两个选项,如下我们可以建立libtest的动态版本:
gcc -K PIC -G -o $HOME/lib/libtest.so myfunc.c
--
也许有一天,他再从海上蓬蓬的雨点中升起,
飞向西来,再形成一道江流,再冲倒两旁的石壁,
再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生......
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 203.207.226.124]
BBS水木清华站∶精华区