Terminal
GUI 程序從終端執行,而不是從程序啟動器執行
dmenu
我有一個不錯的 GUI 程序,如果我從終端啟動它執行良好,但如果我從非終端程序啟動器(如or )執行它則根本無法啟動gmrun
。每次我這樣做時,都不會發生任何可觀察到的事情(無論是在螢幕上還是在某些日誌中),但一個已失效的殭屍程序是我迄今為止看到的唯一痕跡。我還嘗試了幾個可能的命令來從9menu啟動它,我使用*/bin/bash*作為 shell 來執行命令。目前,我陷入困境,想知道下一步該去哪裡尋找可能的解決方案。由於程序從終端執行良好,我認為它與我的 - 不可否認 - 非正常和過時的設置無關?我應該先看哪裡,wxWidgets,語言環境,…?
這是我的環境:
- Debian 3.2.102-1 i686 GNU/Linux
- GUI程序:treesheets(自己編譯,使用wxWidgets 3.1.4)
- 視窗管理器:我嘗試使用dwm和2bwm
任何提示都會有所幫助!
我可以通過檢查樹表的命令執行找到決定性的提示,這會導致殭屍程序使用
strace
. 事實上,我在另一個 C++ 程序中偶然發現了同樣的問題。根本原因很常見,strace日誌顯示: 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-dtags
到LDFLAGS
(如果是 CMake 項目:添加set(CMAKE_INSTALL_RPATH "/usr/local/lib")
到 CMakeLists.txt)