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水木清华站∶精华区