簡體   English   中英

如何在 Ubuntu 上運行無擴展名(也許是 ELF)文件?

[英]How do I run an extensionless (maybe ELF) file on Ubuntu?

我在 linux 上獲得了一個“二進制”文件,在 windows 上獲得了一個用於特定任務的單獨文件。 這些程序是 windows 上的一個 exe。該文件的 linux 版本在 linux 上具有相同的 function,因為它也具有 windows。

但是,我無法執行此操作。 我嘗試(在終端上)僅通過文件名./[filename]來執行它,甚至嘗試了chmod +x [filename]然后嘗試了第二種方式。

對於一切......我得到的結果是:“找不到命令”。 (順便說一句,該文件肯定在那里)。

我應該做些什么? 它的文件命令產生:

ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=e805f746e65c09cc8b0c037d8a8c27ee0a6a051c

我的猜測是這是64位系統上的32位編譯。 我使用gcc上的-m32選項將一個小的c文件交叉編譯成二進制文件。 這還需要一些額外的包。 結果a.out看起來像這樣。

% file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=be02470c8337b96e7deaaff323bc53865991c3ab, not stripped

將其與本機系統二進制文件進行比較

% file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a0823e17cafbe5b2296346216445566840fdfd88, stripped

運行a.out告訴我這個。

% ./a.out
zsh: no such file or directory: ./a.out

我認為,特定的“未找到命令”消息是bash打印的內容。 我自己用zsh。

要使其工作,您可以安裝multilib包。 我沒有把它縮小到確切的包,但在Debian上安裝gcc-multilib可以提供你需要的一切。 安裝完成后,這就是我得到的。

% ./a.out
3.140523

(該程序應該估計PI的價值)。

注意:我實際上只需要安裝gcc-multilib來編譯文件。 然后,我卸載了這些軟件包,以模仿64位系統,該系統沒有所需的32位運行時庫。

a.out 有可執行權限嗎?

使用 ls -la cmd 檢查,如果沒有,則使用 chmod a+x a.out 添加權限,然后嘗試執行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM