关闭

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

标签: linuxfileobjectdate工具
668人阅读 评论(0) 收藏 举报
分类:
/*
 * 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

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:680420次
    • 积分:8795
    • 等级:
    • 排名:第2157名
    • 原创:329篇
    • 转载:6篇
    • 译文:0篇
    • 评论:72条
    最新评论