该应用程序是一个 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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)