2010-06-10 71 views
4

該應用程序是一個Firefox插件(從$ HOME/.mozilla/plugins加載),所以設置LD_LIBRARY_PATH的包裝腳本不是一個簡單的選項。運行帶有共享庫的GNU/Linux Firefox插件(用於安裝時無需root訪問)

據我所知,RPATH不能引用$ HOME並且只能是絕對路徑。

Firefox嘗試從〜/ .mozilla/plugins中刪除它的插件,但失敗(因爲它取決於用戶主目錄中某處安裝的共享庫)。

在Firefox附近修改Firefox菜單項以提供一個封裝(使用LD_LIBRARY_PATH)太冒險了。

安裝程序腳本應該執行哪些操作(無需root訪問權限)以製作取決於共享庫的標準Firefox加載插件?

  1. 我應該試着讓所有東西都嵌入到.so中去除依賴關係嗎?
  2. 我應該在安裝階段嘗試讓安裝程序腳本完成鏈接或修補RPATH嗎?
+0

在安裝程序中包含「patchelf」,它將檢測到的路徑修補到正在安裝的插件。 – 2010-06-11 12:51:55

+0

用$ ORIGIN刪除了帶有「patchelf」和硬編碼路徑的黑客 – 2010-06-11 19:48:24

回答

4

將RPATH設置爲$ORIGIN/lib,這樣加載器就會查找與我的文件相關的庫。

腳本只是解包插件$HOME/.mozilla/plugins/myplugin.so和庫$HOME/.mozilla/plugins/lib/

rpath中可以指定通過添加Wl,-rpath,'$ORIGIN/lib'$應以生成文件被加倍)進行接頭雖然gcc和也可以編譯後通過patchelf被改變。

+0

順便說一下,您可以通過$ ORIGIN /../獲得$ HOME。 – 2011-07-14 06:04:50

+0

是的,它已經這樣做了。 – 2011-07-14 13:40:13