[英]Can I set @executable_path from Python
我有一個用Python編寫的應用程序,它通過C ++包裝器模塊使用Ogre3D。 嘗試運行我的應用程序時
python /path/to/myapp.py
我得到錯誤
dlopen(./ MyOgreWrapper.so,2):庫未加載:@executable_path /../ Frameworks / Ogre.framework / Versions / 1.9.0 / Ogre引用自:/path/to/MyOgreWrapper.so原因:找不到圖像
我從MyOgreWrapper.so所在的目錄中運行它,以便可以通過Python找到MyOgreWrapper.so。 Ogre.framework相對於MyOgreWrapper.so的位置位於../Frameworks中。
$otool -l MyOgreWrapper.so
MyOgreWrapper.so:
@rpath/MyOgreWrapper.so (compatibility version 0.0.0, current version 0.0.0)
@executable_path/../Frameworks/Ogre.framework/Versions/1.9.0/Ogre (compatibility version 1.9.0, current version 1.9.0)
...
我懷疑這是因為@executable_path設置為python可執行文件的路徑。
有沒有一種方法可以從Python設置環境,以便@executable_path是當前目錄?
(我知道,如果我在MyOgreWrapper.so中將Ogre的路徑以及其他一些依賴項更改為@loader_path,這一切都會起作用,但這不是開箱即用的方式,我寧願不必這樣做。)
不,無法從可執行文件內控制@executable_path
。 @executable_path
由動態加載程序dyld
解析,它使用它加載的可執行文件的路徑。 它對於任何給定的可執行文件都是固定的。
另外,如果可以更改它,則可能會破壞該進程嘗試加載的其他內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.