我已经在我选择的目录下构建并安装了一个应用程序,假设在下/home/jim/usr
,因此文件被放在三到四个文件夹中,都在这个文件夹下($HOME/usr
例如bin
,,,,,等等)。include
lib
share
我可以从命令行启动此应用程序,因为我已将正确的路径添加到我的环境变量PATH
中。LD_LIBRARY_PATH
~/.bashrc
我向文件添加了相同的路径~/.profile
,如果我没记错的话,该文件应该由 Ubuntu 进行解析。
不起作用。什么都没有。我接下来能去哪里?
编辑:我注销/登录并重新启动了计算机。两者都没有改变任何东西。问题似乎来自于无论我做什么,LD_LIBRARY_PATH 环境变量都没有正确传递给 Ubuntu。
使用日志文件,我发现我在此示例中尝试运行的应用程序找不到位于中的依赖项~/usr/lib
。
一个解决方案是将/home/jim/usr/lib
文件夹添加到位于的文件内/etc/ld.so.conf.d/
,但我没有这台机器的管理员权限。
制作像这样的包装脚本是可行的:
#!/bin/bash
export LD_LIBRARY_PATH=$HLOC/usr/lib
application &> $HOME/application_messages.log
但这会迫使我使用此脚本包装我所有在家编译的应用程序。有什么想法吗?
为什么 Ubuntu/Gnome 会从我的设置变量中删除 LD_LIBRARY_PATH 环境变量?是不是因为尝试这样做是不好的做法?
更新(和解决方案):正如 Christopher 发现的,启动板上有一个关于此问题的错误报告。LD_LIBRARY_PATH 是取消设置解析文件后~/.profile
。查看错误报告。目前唯一的解决方案似乎是制作一个包装脚本。
答案1
为其创建一个文件:
sudo vim /etc/ld.so.conf.d/my_application.conf
该文件的内容如下:
/home/jim/usr/lib
保存。重建缓存:
sudo ldconfig -v