Linux

奇怪的可執行行為

  • July 10, 2011

我有一台帶有 ubuntu 9.10 的伺服器機器。我正在嘗試安裝一個執行檔,結果證明它是最新的 flashplayer(調試器版本)。

不知何故,該文件顯示為存在且可執行,但在啟動它時,控制台指示文件不存在:

rodrigo@ns360773:~/t_fplayer$ pwd
/home/rodrigo/t_fplayer
rodrigo@ns360773:~/t_fplayer$ ls -lh
total 12M
-rwxr-xr-x 1 rodrigo rodrigo 12M 2011-07-09 11:35 flashplayerdebugger
rodrigo@ns360773:~/t_fplayer$ ./flashplayerdebugger
-bash: ./flashplayerdebugger: No such file or directory
rodrigo@ns360773:~/t_fplayer$ ldd flashplayerdebugger
      not a dynamic executable

在我的本地機器上使用相同的執行檔(通過 ssh 複製)可以正常工作。

知道發生了什麼嗎?什麼可以解釋這種行為?

知道如何解決這個問題嗎?

檢查架構:如果您沒有安裝兼容性庫,您將收到在 AMD64 系統上執行 x86 二進製文件的消息。

Ubuntu 9.04 也不再更新,所以你可能想要更新它。

靜態或動態,它仍然使用動態載入的“解釋器”,在 Linux 上通常命名為ld-linux.so.VERSION. 如果您的執行檔需要不存在的解釋器版本,例如當您嘗試在舊系統上使用較新的二進製文件時,您將收到該錯誤,因為找不到解釋器。(並且錯誤消息很不幸,但無法修復,除非核心使用更好的錯誤報告 API 進行擴展;所有 shell 都知道它是對 .ENOENT的響應execve("./flashplayerdebugger", ...)。)所以我猜你正在嘗試執行為 Ubuntu 編譯的二進製文件11.x 在你的舊伺服器上,這是一個失敗的原因——你需要為 Ubuntu 9.10 編譯一個。

引用自:https://serverfault.com/questions/288666