Linux
奇怪的可執行行為
我有一台帶有 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 編譯一個。