本頁面 - http://labs.qt.nokia.com/2011/10/28/rpath-and-runpath/ - 說,大約爲了在ld.so庫搜索:使用RPATH而不是RUNPATH?
Unless loading object has RUNPATH:
RPATH of the loading object,
then the RPATH of its loader (unless it has a RUNPATH), ...,
until the end of the chain, which is either the executable
or an object loaded by dlopen
Unless executable has RUNPATH:
RPATH of the executable
LD_LIBRARY_PATH
RUNPATH of the loading object
ld.so.cache
default dirs
,然後建議:
當你船的二進制文件,或者使用RPATH,而不是運行路徑或保證 LD_LIBRARY_PATH在它們運行之前被設置。
因此,使用RPATH
與RUNPATH
是不好的,因爲RUNPATH
樣-的取消預期RPATH
所以間接動態加載不起作用?但爲什麼然後RPATH
已棄用RUNPATH
?
有人可以解釋一下情況嗎?
問題是,建議使用RUNPATH而不使用RPATH,並且不推薦使用RPATH,但RUNPATH目前不受所有系統支持。所以我今天做了什麼**來使申請工作?正如Qt文章所示,在使用插件時,使用RPATH比RUNPATH更有用。所以整個情況在這裏非常混亂 – zaharpopov
@zaharpopov,我推薦並遵循自己的最佳方法是生成很好地集成在目標平臺中的應用程序,其中包括*不分發競爭版本的平臺共享庫*。我認爲這是問題的根源,並且在'DT_RPATH'和'DT_RPATH'之間進行了黑客攻擊和破解,而朋友是一個試圖側重解決問題而不是解決問題的錯誤嘗試。 – chill
這不簡單。與Qt問題是該應用程序想要Qt庫的更新版本比系統上存在。有些系統已經過時了Qt SO,那麼你會怎麼做?如果你需要一個特定的版本 – zaharpopov