添加库路经 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??
添加库路经 linux,linux下的静态库与动态库相关推荐
- linux系统下的“静态库和动态库”专题之一:库的概念和规则
什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的本质不同,因此二者的库也是不兼 ...
- linux系统下的“静态库和动态库”专题之二:库的创建和使用
接上文[linux系统下的"静态库和动态库"专题之一:库的概念和规则]所述,我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为静态库和动态库两种. – 静态库在程序编译 ...
- linux系统应用学习(三)--- 动态库静态库
动态库静态库 库文件:一般指第三方提供的可调用的库函数文件,库文件封存的是函数体,即.c文件里面的内容. 动态库 静态库 Windows下: xx.dll ...
- linux 编译查看链接库详情,Linux环境下的编译,链接与库的使用
链接参数控制 链接器中提供了-dn -dy 参数来控制使用的是动态库还是静态库,-dn表示后面使用的是静态库,-dy表示使用的是动态库 例: g++ -Lpath -Wl,-dn -lx -Wl,-d ...
- Linux系统程序运行时加载动态库路径顺序
程序运行时加载动态库路径顺序(Linux) 在linux系统中,如果程序需要加载动态库,它会按照一定的顺序(优先级)去查找: 链接时路径(Link-time path)和运行时路径(Run-time ...
- 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- android 动态库 后缀,Android Robolectric加载运行本地So动态库
前言 Robolectric 是 Android 的单元测试框架,运行无需 Android 真机环境直接运行在 JVM 之上,所以在 test case 运行速度效率上有了很大提升,接近于 Java ...
- 【Android 逆向】Android 中常用的 so 动态库 ( 拷贝 /system/lib/ 中的 Android 系统 so 动态库 )
文章目录 一.拷贝 /system/lib/ 中的 Android 系统 so 动态库 一.拷贝 /system/lib/ 中的 Android 系统 so 动态库 将 Android 系统的 /sy ...
- Linux 下的静态(函数)库、动态(函数)库
0. 基本 在命名上,静态库的名字一般是 libxxx.a,动态库的名字一般是 libxxx.so,有时 libxxx.so.major.minor,xxx 是该 lib 的名字,major 是主版本 ...
- Linux下CMake简明教程(六)动态库和静态库的编译控制
代码在git 有时只需要编译出动态库和静态库,然后等着让其它程序去使用.让我们看下这种情况该如何使用cmake.首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c ├── CM ...
最新文章
- hexo的yelee主题使用本地自己指定的自定义字体
- 博客园电子月刊第三期出炉
- 20135127陶俊杰 实验一
- Celery基本使用---django-celery实现异步HTTP请求
- Linux oracle中文乱码的问题解决
- 用jsonp 解决跨域问题
- Python标准库:内置函数ascii(object)
- 【渝粤教育】广东开放大学 公文写作选读 形成性考核 (30)
- [Unity-24] Unity的四种载入场景的方法
- pytorch中模型结构图的可视化
- Linux如何安装iperf软件,【iperf】iperfforLinux-最笨下载
- python爬虫入门之爬取英雄联盟官网的所有英雄数据
- openresty模板html页面,springboot+nginx+lua开发+html模板渲染
- HECTF2021-WP集合
- 成都榆熙:做拼多多电商如何优化用户消费体验?
- Python - 经典程序示例
- 使用ADB命令抓取手机日志——如手机无响应adb bugreport bugreport.txt
- MT【256】2016四川高考解答压轴题
- 使用Matlab转换高阶方程自变量和因变量
- linux基础培训下载,huimaiLinux系统基础培训.ppt
热门文章
- HTTP1.0、HTTP1.1 、SPDY、HTTP2.0之演变过程和优化
- Android之切换账号登录依然能登录成功问题解决办法
- 有关 php __autoload 自动加载类函数的用法
- git菜单形式的_Idea:Git的常用菜单操作和常用命令
- 小手工纸盒机器人_亲子手工 | DIY弹珠迷宫小黑手自制玩具系列
- java.lang.illegalagr_spring – java.lang.IllegalArgumentException:环境不能为null
- mysql连接指定时区_MySQL创建JDBC连接时区问题
- python切片原理_深度解析Python切片
- mysql select 反选_JQuery实现全选、全不选和反选功能
- linux 下运行libnids,libnids出错