附带共享库的 GNU/Linux Firefox 插件(用于无需 root 访问权限的安装)
-
26-09-2019 - |
题
该应用程序是一个 Firefox 插件(从 $HOME/.mozilla/plugins 加载),因此设置 LD_LIBRARY_PATH 的包装脚本不是一个简单的选择。
据我所知,RPATH 不能引用 $HOME,只能是绝对路径。
Firefox 尝试从 ~/.mozilla/plugins 中 dlopen 它的插件,但失败了(因为它依赖于安装在用户主目录中某处的共享库)。
修改 Firefox 菜单项以提供围绕 Firefox 的包装器(使用 LD_LIBRARY_PATH)太hacky了。
安装程序脚本应该做什么(没有 root 访问权限)才能使标准的 Firefox 加载依赖于共享库的插件?
- 我是否应该尝试将所有内容嵌入到 .so 中以删除依赖项?
- 我应该在安装阶段尝试制作安装程序脚本来完成链接或修补 RPATH 吗?
解决方案
将 RPATH 设置为 $ORIGIN/lib
因此加载程序将查找与我的文件相关的库。
脚本只是将插件解压到 $HOME/.mozilla/plugins/myplugin.so
和图书馆 $HOME/.mozilla/plugins/lib/
可以通过 gcc 添加 rpath 来指定链接器 Wl,-rpath,'$ORIGIN/lib'
($
应在 Makefile 中加倍),也可以在编译后更改 patchelf
.
不隶属于 StackOverflow