abcdf

坐在外包公司的客厅里等着面试,暖风熏人,突然发现这样的工作挺无聊的。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

动态库创建

 

1.编译动态库

Vim add.cpp

int add(int a, int b)

{

        return a + b;

}

Vim add.h

Int add(int a, int b);

 

g++ add.cpp -o libadd.so -fPIC -shared

 

2.链接动态库

#include "add.h"

#include <iostream>

 

int main()

{

int ret = add(2, 3);

std::cout << ret << std::endl;

 

return 0;

}

 

g++ main.cpp -o main -I. -L. -ladd

 

3.设置动态库加载路径

编译好程序后,运行,会出现问题,如下

 

我们需要把main程序运行需要的动态库加入到系统加载动态库路径中

 centos系统中,在/etc/ld.so.conf中可以看到该系统的动态库加载路径

libadd.so放到该路径后,或者将libadd.so所在目录加入到ld.so.conf中

运行ldconfig命令,更新系统动态库缓存

使用lddconfig -p|grep libadd.so  看一下该库是否在动态库缓存中

 

一般动态库加载到动态库缓存中,程序就可以调用到它了。

 

常用的关于动态库的命令:

有时候动态库会报找不到某个函数的错误,使用

ldd -r libadd.so 命令,查看libadd.so的依赖项,看看它是否有依赖项缺失

原创内容,转载请注明出处http://www.cnblogs.com/abcdk/p/6719217.html

posted on 2017-04-16 16:54  abcdf  阅读(295)  评论(0)    收藏  举报