linux下生成动态库和静态库的方法

来源:互联网 发布:c语言求完全数 编辑:程序博客网 时间:2024/05/16 12:42

要了解linux下怎么生成动态库和静态库文件,那么首先应该了解怎么使用静态库和动态库文件。所以,我首先介绍一下gcc编译器的 -l 和 -L 参数。

-l 和 -L 参数的使用:

-l 后面紧跟的是库文件名,怎么用的呢。比如有一个库文件名为 libtest.so ,想使用这个库时,就要在gcc选项中加 -ltest 。而且默认该库会在 /lib, /usr/lib 和 /usr/local/lib 里,如果你要引用的库文件都不在这几个里面,-L 选项就有用了。 -L 紧跟的是库文件所在目录的路径。 比如库文件在当前文件夹里 -L. -ltest 。这样既可。


这里我事先写了三个文件,文件内容不需要知道,我把它们之间关系说下。comm.h , comm.c , test.c 。 其中comm.h中包含了一些函数的声明,comm.c中是这些函数的具体实现,test.c中的程序就用到了这些函数。很明显,我们是要用comm.c生成库文件,test.c引用库文件。


静态链接库:

1. 编译生成目标文件

gcc -c comm.c//会生成comm.o

2. 创建静态库

ar cqs libcomm.a comm.o

3. 链接静态库文件,生成可执行文件

gcc test.c -static -L. -lcomm -o test


动态链接库:

1. 编译生成动态链接库

gcc comm.c -fPIC -shared -o libcomm.so

-fPIC : 生成与位置无关的代码, 也即是当程序装载动态库时,可以把它放到内存的任意位置

-shared : 生成动态链接库

2. 链接动态链接库文件

gcc test.c -L. -lcomm -o test


0 0
原创粉丝点击