如何理解shared library
共享库的作用是在编程中预先编译好的代码,可以在程序中重复使用,比如一些数学函数,可以不需要自己编写,直接调用相关函数即可实现,也就是一些通用的代码,我们就不用再重复造轮子去实现。
如libc是linux 中一个标准的c库,在linux中,支持两种类型的lib库:
- 静态库:在编译时候,静态绑定程序
- 动态或共享库:在启动程序并加载到内存时加载库到内存中,并在运行时进行绑定
共享库都是以.so结尾的文件。
linux上的共享库路径:
默认在/usr/local/lib, /usr/local/lib64, /usr/lib,/usr/lib64,系统启动的库文件在/lib,/lib64。
postgresql 共享库的路径在<install_directory>/lib下,也就是一般我们配置的环境变量$PGHOME/lib下。我们可以设置LD_LIBRARY_PATH环境变量,指定相关库的路径。
比如我一般都会这样设置
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:
创建一个C程序共享库文件: first.so
/*创建一个共享库文件*/
gcc -shared -o first.so -fPIC first.c
/*运行可执行文件*/
gcc first.c first.so
./a.out
./a.out: error while loading shared libraries: first.so: cannot open shared object file: No such file or directory
/*必须指定位置才可运行*/
#pwd
/root
# export LD_LIBRARY_PATH=/root
./a.out
Hello! This is a test prgoram.
那么我们理解一下PG中的shared_preload_libraries参数又是什么呢?
shared_preload_libraries:在postmaster启动的时候加载,因此在fork后台进程之前,需要注册共享内存,锁,钩子程序,需要加载多个共享库,用逗号分隔。
session_preload_libraries:是在fork后台进程之后加载,不需要注册共享内存
local_preload_libraries:和session_preload_libraries类似,但是仅限于插件目录,可以由普通用户设置。
load:载入一个共享库文件.
PostgreSQL 中创建插件大多是动态库共享对象,因此执行创建插件时,共享对象会加载并调用。
根据插件的使用情况,可能需要在后postgresql.conf中添加shared_preload_libraries.
例如,pg_stat_statements必须要将其添加postgresql.conf中的shared_preload_libraries来加载,因为它需要额外的共享内存。这意味着需要重新启动数据库才能添加或删除模块。
参考:
https://www.postgresql.org/docs/13/runtime-config-client.html#RUNTIME-CONFIG-CLIENT-PRELOAD
https://www.postgresql.org/docs/13/sql-load.html
https://postgreshelp.com/shared-preload-libraries/#What_is_shared_library
如何理解shared library相关推荐
- 关于shared library的描述
原文链接:https://blog.csdn.net/w_ww_w/article/details/7002880 以前搞共享库动态加载管理时找的一些资料,放在这里共享. 引言: 在xmeeting中 ...
- Qt学习之路(60): 创建shared library
前段时间说了Qt一些类库的使用,今天来换一下口味,来看一下程序设计的问题.今天来说的是关于共享库 shared library. 如果你打开一些 Windows 应用程序的目录,你会发现有很多程序的 ...
- ImportError: Can not find the shared library: libhdfs3.so解决方案
大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...
- linux下Makefile中包含有shared library动态链接库文件时候的简单例子
如果不知道什么是makefile,可以首先看我的另一篇博客: linux下Makefile的简单例子及解释 http://www.cnblogs.com/lihaozy/archive/2012/08 ...
- 在Flex3中使用Runtime Shared Library (RSL)
本文来自:http://wangcheng.iteye.com/blog/187213 在Flex Builder的flex_builder_dir/sdks/3.0.0/frameworks/rsl ...
- 【错误记录】Android NDK 错误排查记录 ( error: undefined reference to | Linking CXX shared library FAILED )
文章目录 一. 报错信息 二. 错误分析 三. 错误总结 一. 报错信息 报错信息 : Build command failed. Error while executing process Y:\0 ...
- eclipse报错:Failed to load the JNI shared library
Eclipse运行时提示"Failed to load the JNI shared library /Java/jre6/bin/client/jvm.dll"的一个解决方案 因 ...
- 【已解决】运行Eclipse出错:Failed toload the JNI shared library
[已解决]运行Eclipse出错:Failed toload the JNI shared library [问题] 运行Android的ADT,即Eclipse出错: Failed to load ...
- ffmpeg for android shared library
ffmpeg for android shared library This comes from my github README 移植ffmpeg到android,编译可用于jni调用的so库. ...
最新文章
- 【组队学习】【23期】Datawhale编程实践(区块链)
- xp里删除不想要的删不掉的帐户
- Oracle12c多租户如何启动关闭CDB或PDB (PDB自动启动)
- 注册DirectShow filter时应该注意中文路径
- oracle一行变一列,oracle多行变一行
- python文件数据总和计算_python 计算文件夹里所有内容的大小总和
- kubernetes cpu限制参数说明
- 变成小白的第一本Python入门书,第五章循环与判断课后题答案
- 冒泡排序代码_凡人能看懂的冒泡排序和快速排序(附动态图和代码详解))
- 如何设置 Web 服务器的权限之iis
- 阿里消息中间件ONS消息乱序问题(二)
- dw1820网卡支持linux吗,黑苹果驱动DW1820A无线网卡教程
- android 动画方式,Android动画实现方式的汇总
- 蓝桥杯 -罗马数字问题
- 关于Python中的编程,这篇阅读量预算10万+的文章可能是你见过的最完整的讲解
- 有别于普通专线的BGP线路
- [架构之路-32]:目标系统 - 系统软件 - Linux OS用户空间程序的启动、关闭、监管 -- init进程
- kityminder百度脑图转xmind
- 平分肥宅快乐水(C++)
- 我是怎样用这个神器搞定我的4T电影的
热门文章
- 华为机试--高精度整数加法
- qq分享和空间分享弹出对话框或Popu…
- Internet of things:是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置
- 详解线性回归算法的纯Python实现
- 字体的故事之:Arial 无处不在
- 美国杜克大学计算机专业世界排名,美国杜克大学全美排名
- H5IOSAndroid-入坑指南
- android登陆界面设计方案,011android初级篇之android登录界面的设计
- Others9_无线路由器说说2.4G和5G Wi-Fi的区别
- 问mysql数据库varchar(50),能存多少个中文字。 ---浅谈字符与字节的区别