Centos

ldd 告訴我我的應用程序“不是動態執行檔”

  • October 18, 2019

我有一個從天文學教授那裡收到的 32 位應用程序(稱為 uclsyn)。一年前我設法讓它在 CentOS 上執行,但現在當我設置一個新的 CentOS 虛擬機時,它無法執行,我不知道為什麼。它不斷地以“Killed”回來。

這是命令行上的交換:

$ ./uclsyn_linux
Killed

$ ldd ./uclsyn_linux
not a dynamic executable

$ file ./uclsyn_linux
uclsyn_linux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

在執行的機器上,“ldd ./uclsyn_linux”返回完整的依賴項列表。我找到了提供這些共享庫的軟體包,它們似乎都已安裝。

需要的包

  • libSM-1.1.0-7.1.el6.i686
  • libX11-1.3-2.el6.i686
  • libgcc-4.4.6-3.el6.i386
  • glibc-2.12-1.47.el6_2.9.i686
  • libuuid-2.17.2-12.4.el6.i686
  • libXau-1.0.5-1.el6.i686
  • 我檢查過並且已經安裝的應用程序本地還有一堆庫。

我的環境

在 VirtualBox 下執行的 CentOS

uname -a: Linux localhost.localdomain 2.6.32-358.el6.i686 #1 SMP Thu Feb 21 12:50:49 UTC 2013 i686 i686 i386 GNU/Linux

這裡的錯誤是由於 VirtualMachine 上沒有足夠的 RAM。執行strace ./programname表明程序在載入任何庫之前就在它開始執行時被終止。增加可用的 RAM 量可確保程序可以執行。

有用的回應

其他人提供了一些有用的響應,即@slm 提供了有用的命令來檢查每個庫是否存在,@lgeorget 建議嘗試該strace命令。

我剛剛遇到了 32 位二進製文件的問題,解決方案是:

apt-get install gcc-multilib

$ uname -a
Linux bla 2.6.32-028stab094.3 #1 SMP Thu Sep 22 12:47:37 MSD 2011 x86_64 GNU/Linux

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