因此,當我嘗試在我學校的「hercules」服務器上運行編譯的C程序時,它運行正常,我通常會這樣做。然而,我有一個需要使用fork的任務,並且禁止運行在該服務器上fork的程序,而是通過遠程連接到幾臺Linux機器之一併在那裏運行它們,從命令行運行它們編譯的C文件不可執行
但是,任何試圖這樣做給了我這個錯誤:
shell2: Exec format error. Binary file not executable.
總之,我的命令提示符看起來是這樣的:
a049403[8]% shell2
shell2: Exec format error. Binary file not executable.
我已經得到了shell2文件中的工作目錄,當我輸入「ls」時,它用*字符顯示錶明它在概念上是可執行的。我已經嘗試將其權限設置爲777.它爲我一直在使用和運行的其他C程序生成相同的錯誤,並且「hercules」可以運行完全相同的文件而沒有任何困難或投訴。對於這個特殊程序我的make文件看起來是這樣的:
all: shell2
Basics.o: Basics.c Basics.h
cc -c Basics.c
doublinked.o: doublelinked.c doublelinked.h
cc -c doublelinked.c
main.o: main.c Basics.h doublelinked.h
cc -c main.c
shell2: main.o Basics.o doublelinked.o
cc main.o Basics.o doublelinked.o -o shell2
clean:
rm -f *o shell2
...如果我重新運行makefile似乎構建一個不困難的程序。
因此,一個可以編譯C程序的環境將無法運行它們嗎?任何可能的解決方法?
目標機器上的'file yourprog/bin/sh'說了什麼?如果它說的沒有太多相同的東西,麻煩就是錯誤信息所說的 - 你的二進制文件是在一臺機器上準備的,但是在你試圖運行它的機器上不可執行。目前尚不清楚'hercules'的含義或其運行的是哪個O/S,但它似乎與您嘗試運行它的Linux機器不兼容。在Linux機器上進行編譯,而不是在'hercules'上。 –
如果「hercules」沒有使用與您的Linux機器完全相同的可執行格式,運行完全相同的文件(您的文字)的「hercules」意味着什麼。刪除文件,*然後*'make clean',然後'make all' *在你的Linux機器上*。 – WhozCraig
你應該在你自己的筆記本電腦上安裝Linux ...... –