4

该应用程序是一个 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 吗?
4

1 回答 1

4

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

脚本只是将插件解包到$HOME/.mozilla/plugins/myplugin.so和库到$HOME/.mozilla/plugins/lib/

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

于 2010-06-11T19:52:32.440 回答