该应用程序是一个 Firefox 插件(从 $HOME/.mozilla/plugins 加载),因此设置 LD_LIBRARY_PATH 的包装脚本不是一个简单的选择。

据我所知,RPATH 不能引用 $HOME,只能是绝对路径。

Firefox 尝试从 ~/.mozilla/plugins 中 dlopen 它的插件,但失败了(因为它依赖于安装在用户主目录中某处的共享库)。

修改 Firefox 菜单项以提供围绕 Firefox 的包装器(使用 LD_LIBRARY_PATH)太hacky了。

安装程序脚本应该做什么(没有 root 访问权限)才能使标准的 Firefox 加载依赖于共享库的插件?

  1. 我是否应该尝试将所有内容嵌入到 .so 中以删除依赖项?
  2. 我应该在安装阶段尝试制作安装程序脚本来完成链接或修补 RPATH 吗?
有帮助吗?

解决方案

将 RPATH 设置为 $ORIGIN/lib 因此加载程序将查找与我的文件相关的库。

脚本只是将插件解压到 $HOME/.mozilla/plugins/myplugin.so 和图书馆 $HOME/.mozilla/plugins/lib/

可以通过 gcc 添加 rpath 来指定链接器 Wl,-rpath,'$ORIGIN/lib' ($ 应在 Makefile 中加倍),也可以在编译后更改 patchelf.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top