安装在 ~/usr 中的应用程序从终端启动,但没有从应用程序菜单启动(或者为什么在 .profile 中设置 ld_library_path 不起作用)

安装在 ~/usr 中的应用程序从终端启动,但没有从应用程序菜单启动(或者为什么在 .profile 中设置 ld_library_path 不起作用)

我已经在我选择的目录下构建并安装了一个应用程序,假设在下/home/jim/usr,因此文件被放在三到四个文件夹中,都在这个文件夹下($HOME/usr例如bin,,,,,等等)。includelibshare

我可以从命令行启动此应用程序,因为我已将正确的路径添加到我的环境变量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

相关内容