添加库路经 linux,linux下的静态库与动态库

文件名形如 libxxx.so,其中so是 Shared Object 的缩写,即可以共享的目标文件。

生成动态库常用 gcc 命令;

举例:

编写头文件:ok.h 文件

#ifndef __OK_H__#define __OK_H__

voidok();#endif

编写 ok.c 文件

#include "ok.h"

int main(int argc, char** argv) {

ok();return 0;

}

生成动态库

gcc –fPIC –shared –o libok.so ok.c

编写 test.c 测试文件

#include "ok.h"

int main(int argc, char argv**) {

ok();return 0;

}

利用动态库生成可执行文件;

gcc -o Out test.c -L ./ –l ok

注意:上面中的 –L :追加目录到库文件的搜索路径中; –l  :指定使用的库文件,其中的库名 将前缀lib和后缀.a(或.so)省略。

现在运行:Out 可执行文件;

yinheyi@ubuntu:~/play$ ./Out

./Out: error while loading shared libraries: libok.so: cannot open shared object file: No such file or directory

先解决存在问题:这个Out 运行时,它的库的搜索路经不包括当前目录吧(上面用-L 追加的目录只用于生成Out文件的,和运行时没有关系),所以呢,

1. 我们可以把 libok.so 库文件放到搜索目录中去:/usr/lib 或 /lib;

2.也可以临时添加当前搜索路经:

export LD_LIBRARY_PATH=`pwd`

3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径;动态装入器将在其中查找共享库。注意: /etc/ld.so.conf 中并不必包含 /lib 和 /usr/lib,因为ldconfig程序会自动搜索这两个目录。

1)把库路经放入 /etc/ld.so.conf文件中;

2)运行ldconfig 生成最新的 /etc/ld.so.cache 文件;

本文采用方法二以后再次运行,成功:

yinheyi@ubuntu:~/play$ ./Out

Are you OK??

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值