答案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-dtags
到LDFLAGS
(如果是 CMake 项目:添加set(CMAKE_INSTALL_RPATH "/usr/local/lib")
到 CMakeLists.txt)