GUI 程序从终端运行,但不从程序启动器运行

GUI 程序从终端运行,但不从程序启动器运行

我有一个很好的 GUI 程序,如果我从终端启动它,它运行得很好,但如果我从非终端程序启动器运行它,比如dmenugmrun。每次我这样做时,都没有发生任何可观察到的事情(无论是在屏幕上还是在某些日志中),但迄今为止我看到的唯一痕迹是已失效的僵尸进程。我也尝试过几个可能的命令从开始9个菜单我在哪里使用/bin/bash作为运行命令的 shell。目前,我陷入困境,想知道下一步该去哪里寻找可能的解决方案。

由于该程序在终端上运行良好,我认为这与我不可否认的非常规和过时的设置无关?我应该先看哪里,wxWidgets、语言环境……?

这是我的环境:

  • Debian 3.2.102-1 i686 GNU/Linux
  • 图形用户界面程序:树表(自己编译,使用wxWidgets 3.1.4)
  • 窗口管理器:我尝试过数据管理2bwm

任何提示都会有帮助!

答案1

我可以通过检查命令运行找到决定性的提示树表这会导致僵尸进程使用strace.事实上,我在另一个 C++ 程序中偶然发现了同样的问题。

根本原因很常见,并由斯特雷斯log:库路径libstdc++.so.6是错误的(过时的)。从 shell 运行程序没有问题,因为我有一个环境变量,其中包括我更新的手动安装 glibc 的LD_LIBRARY_PATH路径。/usr/local/lib但运行命令时不存在此环境.xsession

所以,为了解决我的问题

  • 要么添加LD_LIBRARY_PATH=/usr/local/lib到命令中.xsession
  • 在构建过程中在 Makefile 中添加正确的链接标志(例如添加-Wl,-rpath=/usr/local/lib,--enable-new-dtagsLDFLAGS(如果是 CMake 项目:添加set(CMAKE_INSTALL_RPATH "/usr/local/lib")到 CMakeLists.txt)

相关内容