您尚未登录。

#1 2024-03-17 00:05:23

tan9p
会员
注册时间: 2015-07-07
帖子: 111

动态链接库放入lib文件夹的自文件夹,需要如何注册?

RT,自己编译安装了一个工具,需要用到一些动态链接库,它有没有提供安装的脚本,我自己把这些动态链接库复制到lib文件夹中。
如果把这些动态库直接复制到lib文件夹,这个工具可以正常使用;
但是我看到lib文件夹里很多都是用自文件夹组织的,于是我想把这些动态库放入子文件夹里面,也就是目录为/lib/SQLiteStudio/lib/这样的,运行工具会提示找不到动态库。

我想问一下,该如何用自文件夹规整这些动态库呢?在网上搜索,有通过修改ld.so.conf.d里面的文件的,有定义环境变量LD_LIBRARY_PATH的,但是我好奇的是,我的lib文件夹里有那么多的子文件夹,但是环境里压根没有LD_LIBRARY_PATH这个变量,ld.so.conf.d里的文件也并没有包含所有的子文件夹,那么这些子文件夹里的动态库是如何发挥作用的呢?

我想用子文件夹来组织这些动态库,需要如何才能让它们发挥作用?

离线

#2 2024-03-17 10:28:05

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,491
个人网站

Re: 动态链接库放入lib文件夹的自文件夹,需要如何注册?

LD_LIBRARY_PATH 是临时方案,或者处理闭源软件用。

系统自带的 /usr/lib/XXX/*.so 是使用 dlopen 运行时动态加载的,不是启动时由 ld 自动加载的。它们可以指定路径。

离线

#3 2024-03-17 19:58:26

tan9p
会员
注册时间: 2015-07-07
帖子: 111

Re: 动态链接库放入lib文件夹的自文件夹,需要如何注册?

谢谢依云大大,那是不是说具体的加载过程是由应用程序决定的,在不修改应用程序代码的情况下,无法通过修改配置文件的方法,是这些动态库可以放在子文件夹内并能使程序正常运行?

离线

#4 2024-03-17 20:25:42

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,491
个人网站

Re: 动态链接库放入lib文件夹的自文件夹,需要如何注册?

有两种加载方式啊。启动时通过 ld.so 加载,或者运行时通过主动调用 dlopen 加载。后者程序可控,前者你可以配置 ld.so.conf.d。

离线

#5 2024-03-17 21:37:22

tan9p
会员
注册时间: 2015-07-07
帖子: 111

Re: 动态链接库放入lib文件夹的自文件夹,需要如何注册?

谢谢依云大大,我明白了。

离线

#6 2024-03-17 22:12:17

sukanka
会员
所在地: Amoy, China
注册时间: 2020-04-05
帖子: 170
个人网站

Re: 动态链接库放入lib文件夹的自文件夹,需要如何注册?

可以用下 `patchelf`, 我打包闭源软件的时候用这个来调整它们加载库的位置。

离线

页脚