我是一名Unix/Linux新手,他正在嘗試運行一個由沒有任何文檔並且已經被刪除的人編寫的shell腳本。此腳本包含行:在Windows中的gcc無法編譯爲Unix/Linux編寫的C程序
./search $opt1 $arg1 < $poly 2>&1 | tee $output
正試圖獲取文件$poly
和呼叫程序./search
和輸出轉移到$output
。
當我到了這條線,我給出的消息:./search: cannot execute binary file: Exec format error
search
是從腳本調用一個C程序,並在同一文件夾中的各種其他C程序做這個項目。腳本和C程序已經開發出來並且最初是在一個不再可用的Unix/Linux機器上執行的,所以我被要求嘗試復活這個項目,但在Windows下使用NetBeans中的gcc
和cygwin
。
消息:./search: cannot execute binary file: Exec format error
最有可能與search
沒有可執行文件有關。當我嘗試建立的C程序我得到以下輸出:
C:\cygwin64\bin\make.exe -f Makefile
gcc -ansi -g -c cbuild.c
gcc -ansi -g -c complex.c
gcc -ansi -g -c mylib.c
gcc -ansi -g -c poly.c
gcc -ansi -g -c real.c
gcc -ansi -g -c zero.c
gcc -lgmp -lm -lrt -o cbuild cbuild.o complex.o mylib.o poly.o real.o zero.o
real.o: In function `rabs':
/cygdrive/c/../progs/real.c:9: undefined reference to `__imp___gmpf_abs'
/cygdrive/c/../progs/real.c:9:(.text+0x1e): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp___gmpf_abs'
real.o: In function `radd':
我認爲R_X86_64_PC32
指的是我使用的環境。我在Windows 10
的64位版本cygwin
上使用了64位版本的Netbeans
和gcc 5.4.0
。
任何人都可以建議我必須解決這個問題,以便我可以建立C程序?
Cygwin的是沒有Linux/Unix模擬器。 – Olaf
是否編譯,鏈接並運行一個簡單的「* hello,world *」(http://stackoverflow.com/documentation/c/213/hello-world/795/hello-world#t=201608131834051452644)? 「 – alk
」*不提供運行選項*「錯誤是什麼?通過執行'。/ myprogramname'來執行它......:-S – alk