2012-08-01 53 views
1

正在運行的程序我有這個計劃「前衛」,我可以用我的服務器上沒有問題運行。當嘗試我自己的機器(64位的Ubuntu)上運行它,我得到的消息:在不同的Linux發行版

bash: ./prog: cannot execute binary file 

我已確認參與被設置爲777的所有文件中的所有權限,只是要確定它不是權限問題。我相信服務器是32位的,這可能是原因。但是,不應該讓64位操作系統能夠運行32位程序,因爲它只是體系結構的一個子集?如果沒有,是否有一些我可以下載Ubuntu的模擬器,如果這確實是問題,那麼我可以運行32位程序?

我理解的「不能執行二進制文件」的錯誤有所涵蓋,所以上面的只是我在爲什麼我收到消息的猜測,但也許其他人有另一種說法?再次全部

感謝。

+0

文件上「file」命令的輸出是什麼意思? (文件編) – gastush 2012-08-01 14:25:58

+0

我得到以下輸出: '編程:ELF 64位LSB可執行文件,x86-64,版本1(SYSV),動態鏈接(使用共享庫),用於GNU/Linux 2.6.26,BuildID [SHA1] = 0xaa50c47441bf86304c5d2b6cf58e69ca36460d1f,不stripped' – 2012-08-01 14:29:36

+0

您可能沒有安裝一個32位的LD。您還需要安裝它使用的任何庫的32位版本。 – 2012-08-01 14:30:27

回答

2

需要在64位計算機上使用由prog 32位(共享)庫。否則prog無法執行。

嘗試使用

apt-get install ia32-libs 

安裝它們(如果prog需要更多的圖書館,還安裝了32位版本)

這應該做的伎倆。

注意,如果你有prog來源,它可能是更方便(32個庫安裝更小)到您的64位計算機上重新編譯prog

+0

嘿,Veger,試圖'sudo apt-get安裝ia32-libs',但我收到以下消息 'Package ia32-libs不可用,但被其他包引用。 這可能意味着包丟失,已過時,或 只能從另一個source' 叫別的東西?這是偶然的這個包的名字嗎?再次感謝您的幫助。 – 2012-08-01 14:35:14

+1

在Ubuntu中,它確實是[available](http://packages.ubuntu.com/precise/ia32-libs),實際上我已將它安裝在我的機器上。你也可以嘗試'ia32-libs-multiarch'它應該安裝相同的32位庫。此主題還有一個[Ubuntu指南](https://help.ubuntu.com/community/32bit_and_64bit#How_to_Make_32-bit_Applications_Work_on_a_64-bit_Operating_System)。 – Veger 2012-08-01 14:43:41