文件名形如 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??

添加库路经 linux,linux下的静态库与动态库相关推荐

  1. linux系统下的“静态库和动态库”专题之一:库的概念和规则

    什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的本质不同,因此二者的库也是不兼 ...

  2. linux系统下的“静态库和动态库”专题之二:库的创建和使用

    接上文[linux系统下的"静态库和动态库"专题之一:库的概念和规则]所述,我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为静态库和动态库两种. – 静态库在程序编译 ...

  3. linux系统应用学习(三)--- 动态库静态库

    动态库静态库 库文件:一般指第三方提供的可调用的库函数文件,库文件封存的是函数体,即.c文件里面的内容. 动态库      静态库 Windows下:        xx.dll            ...

  4. linux 编译查看链接库详情,Linux环境下的编译,链接与库的使用

    链接参数控制 链接器中提供了-dn -dy 参数来控制使用的是动态库还是静态库,-dn表示后面使用的是静态库,-dy表示使用的是动态库 例: g++ -Lpath -Wl,-dn -lx -Wl,-d ...

  5. Linux系统程序运行时加载动态库路径顺序

    程序运行时加载动态库路径顺序(Linux) 在linux系统中,如果程序需要加载动态库,它会按照一定的顺序(优先级)去查找: 链接时路径(Link-time path)和运行时路径(Run-time ...

  6. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )

    文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  7. android 动态库 后缀,Android Robolectric加载运行本地So动态库

    前言 Robolectric 是 Android 的单元测试框架,运行无需 Android 真机环境直接运行在 JVM 之上,所以在 test case 运行速度效率上有了很大提升,接近于 Java ...

  8. 【Android 逆向】Android 中常用的 so 动态库 ( 拷贝 /system/lib/ 中的 Android 系统 so 动态库 )

    文章目录 一.拷贝 /system/lib/ 中的 Android 系统 so 动态库 一.拷贝 /system/lib/ 中的 Android 系统 so 动态库 将 Android 系统的 /sy ...

  9. Linux 下的静态(函数)库、动态(函数)库

    0. 基本 在命名上,静态库的名字一般是 libxxx.a,动态库的名字一般是 libxxx.so,有时 libxxx.so.major.minor,xxx 是该 lib 的名字,major 是主版本 ...

  10. Linux下CMake简明教程(六)动态库和静态库的编译控制

    代码在git 有时只需要编译出动态库和静态库,然后等着让其它程序去使用.让我们看下这种情况该如何使用cmake.首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c ├── CM ...

最新文章

  1. hexo的yelee主题使用本地自己指定的自定义字体
  2. 博客园电子月刊第三期出炉
  3. 20135127陶俊杰 实验一
  4. Celery基本使用---django-celery实现异步HTTP请求
  5. Linux oracle中文乱码的问题解决
  6. 用jsonp 解决跨域问题
  7. Python标准库:内置函数ascii(object)
  8. 【渝粤教育】广东开放大学 公文写作选读 形成性考核 (30)
  9. [Unity-24] Unity的四种载入场景的方法
  10. pytorch中模型结构图的可视化
  11. Linux如何安装iperf软件,【iperf】iperfforLinux-最笨下载
  12. python爬虫入门之爬取英雄联盟官网的所有英雄数据
  13. openresty模板html页面,springboot+nginx+lua开发+html模板渲染
  14. HECTF2021-WP集合
  15. 成都榆熙:做拼多多电商如何优化用户消费体验?
  16. Python - 经典程序示例
  17. 使用ADB命令抓取手机日志——如手机无响应adb bugreport bugreport.txt
  18. MT【256】2016四川高考解答压轴题
  19. 使用Matlab转换高阶方程自变量和因变量
  20. linux基础培训下载,huimaiLinux系统基础培训.ppt

热门文章

  1. HTTP1.0、HTTP1.1 、SPDY、HTTP2.0之演变过程和优化
  2. Android之切换账号登录依然能登录成功问题解决办法
  3. 有关 php __autoload 自动加载类函数的用法
  4. git菜单形式的_Idea:Git的常用菜单操作和常用命令
  5. 小手工纸盒机器人_亲子手工 | DIY弹珠迷宫小黑手自制玩具系列
  6. java.lang.illegalagr_spring – java.lang.IllegalArgumentException:环境不能为null
  7. mysql连接指定时区_MySQL创建JDBC连接时区问题
  8. python切片原理_深度解析Python切片
  9. mysql select 反选_JQuery实现全选、全不选和反选功能
  10. linux 下运行libnids,libnids出错