У меня есть хорошая программа с графическим интерфейсом, которая отлично работает, если я запускаю ее из терминала, но вообще не запускается, если я запускаю ее из нетерминальной программы запуска -, например dmenu
или gmrun
. Каждый раз, когда я это делаю, ничего заметного не происходит (ни на экране, ни в журнале ), но мертвый зомби-процесс — единственный след, который я вижу до сих пор. Я также попробовал несколько возможных команд , чтобы запустить его из 9меню , где я использую /bin/bash в качестве оболочки для запуска команды. В настоящее время я застрял и задаюсь вопросом, где искать дальше возможное решение.
Поскольку программа отлично работает с терминала, я предполагаю, что это не имеет ничего общего с моей, по общему признанию, нетрадиционной и устаревшей настройкой? Где я должен искать в первую очередь, wxWidgets, локаль, …?
Это моя среда:
Любая подсказка будет полезна!
Я мог бы найти решающую подсказку, проверив выполнение команды древовидных листов , что приводит к зомби-процессу с использованием strace
. Фактически, я наткнулся на ту же проблему с другой программой на C++.
Основная причина довольно распространена и была обнаружена в strace журнале :путь к библиотеке для libstdc++.so.6 был неправильным (устаревшим ). Запустить программу из оболочки не составило труда, потому что там у меня была переменная среды LD_LIBRARY_PATH
, которая включает путь /usr/local/lib
к моей обновленной ручной установке glibc. Но этой среды не было при запуске команды .xsession
.
Итак, чтобы решить мою проблему
LD_LIBRARY_PATH=/usr/local/lib
к команде в.xsession
-Wl,-rpath=/usr/local/lib,--enable-new-dtags
вLDFLAGS
(в случае проекта CMake :добавить set(CMAKE_INSTALL_RPATH "/usr/local/lib")
в CMakeLists.txt)