linux 动态链接库的创建和使用--静态连接

来源:互联网 发布:数据库课程设计实验 编辑:程序博客网 时间:2024/04/19 10:35
/*
 * author: hjjdebug
 * date: 2012
 * title: linux 动态链接库的创建和使用--静态连接
*/

静态连接,不需要用户额外写代码,链接程序(gcc等)链接时指明动态连接库,并将所有外部符号从连接库中都找到。

linux 动态链接库的创建和使用
1. 先创建一个动态链接库。源码如下:
$ cat max.cpp
int max(int a, int b)
{
        return a>b? a:b;
}
编译生成动态库
g++ -shared -o libmax.so max.cpp

2. 再创建一个测试用例,源码如下:
$ cat test.cpp

#include <stdio.h>

int max(int a, int b);

int main(int argc, char *argv[])
{
        int a=max(3,5);
        printf("the bigger is %d\n",a);
        return 0;
}
编译生成可执行文件
g++ -o test test.cpp -lmax -L`pwd`

这里说明一下 -lmax 是指明要链接libmax.so 文件 -L`pwd` 是说链接库位置在本地。
如果你把库copy 到系统路径下,通常是/lib 或/usr/lib 下, 则-L 选项不用添加。

3. 运行可执行文件。
$ ./test
如果你没有copy 库到系统目录下,会有加载错误,如下:
./test: error while loading shared libraries: libmax.so: cannot open shared object file: No such file or directory
把库copy 到系统目录。
sudo cp libmax.so /lib
再次执行 ./test, 成功!
the bigger is 5

遇到问题,请用工具查询。

原创粉丝点击