Terminal

GUI 程序從終端執行,而不是從程序啟動器執行

  • June 20, 2020

dmenu我有一個不錯的 GUI 程序,如果我從終端啟動它執行良好,但如果我從非終端程序啟動器(如or )執行它則根本無法啟動gmrun。每次我這樣做時,都不會發生任何可觀察到的事情(無論是在螢幕上還是在某些日誌中),但一個已失效的殭屍程序是我迄今為止看到的唯一痕跡。我還嘗試了幾個可能的命令來從9menu啟動它,我使用*/bin/bash*作為 shell 來執行命令。目前,我陷入困境,想知道下一步該去哪裡尋找可能的解決方案。

由於程序從終端執行良好,我認為它與我的 - 不可否認 - 非正常和過時的設置無關?我應該先看哪裡,wxWidgets,語言環境,…?

這是我的環境:

  • Debian 3.2.102-1 i686 GNU/Linux
  • GUI程序:treesheets(自己編譯,使用wxWidgets 3.1.4)
  • 視窗管理器:我嘗試使用dwm2bwm

任何提示都會有所幫助!

我可以通過檢查樹表的命令執行找到決定性的提示,這會導致殭屍程序使用strace. 事實上,我在另一個 C++ 程序中偶然發現了同樣的問題。

根本原因很常見,strace日誌顯示: libstdc++.so.6的庫路徑錯誤(過時)。從 shell 執行程序沒有問題,因為我有一個環境變數,其中包含我更新的手動安裝 glibcLD_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)

引用自:https://unix.stackexchange.com/questions/587541