如果我运行应用程序应用程序我~/Desktop/
得到:
/home/me/Desktop/app: error while loading shared libraries: somelib.so.0: cannot open shared object file: No such file or directory
所以我创建了这个脚本应用程序:
DIR="$(dirname "$0")"
export LD_LIBRARY_PATH=$DIR
$DIR/app
进而应用程序運行。
但是,我决定不将其放在桌面上,而是放在 下~/dev/apps/
。因此,我移动了所有文件(app、somelib.so.0、app.sh),并在运行脚本时出现此错误:
/home/me/dev/apps/app: error while loading shared libraries: somelib.so.0: cannot open shared object file: No such file or directory
如果我移动它,它~/foo/bar/
仍然无法运行。
请注意:
- 所有目录和文件具有相同的权限。
- 所有文件都位于同一目录中。
~/Destop/app.sh
我从或调用该脚本~/dev/app/app.sh
。- 我正在运行它
/home/me
这是正常行为还是我的设置或配置有问题?
答案1
您可以LD_LIBRARY_PATH
像这样添加显式路径:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/Desktop/app/lib
(使用库的示例路径)
您也可以将其添加到您的.bash_profile
您还可以/usr/lib
在您的库中创建软链接
答案2
我意识到,在复制 Nautilus 中的所有文件时,动态库被复制为软链接,文件大小要小得多。
删除该库并从 bash 再次复制它解决了该问题。
我将 Nautilus 作为标签添加到问题中。但是,即使再次从 Nautilus 复制粘贴,也无法重现此问题。