【问题标题】:Shipping GNU/Linux Firefox plugin with shared libraries (for installation with no root access)发布带有共享库的 GNU/Linux Firefox 插件(用于没有 root 访问权限的安装)
【发布时间】:2010-06-10 14:37:13
【问题描述】:

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

【问题讨论】:

  • patchelf 包含在安装程序中,该安装程序将检测到的路径修补到正在安装的插件中​​。
  • 删除了 patchelf 的 hack 和 $ORIGIN 的硬编码路径

标签: linux firefox shared-libraries shipping rpath


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 2023-03-25
    • 1970-01-01
    • 2014-01-02
    • 2015-11-12
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多