【发布时间】:2016-12-20 12:25:43
【问题描述】:
我是一个 Unix/Linux 新手,他正在尝试运行一个由一个没有留下任何文档并且已经消亡的人编写的 shell 脚本。该脚本包含以下行:
./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 的cygwin 的64 位版本中使用Netbeans 的64 位版本和gcc 5.4.0。
谁能建议我必须如何解决这个问题,以便我可以构建 C 程序?
【问题讨论】:
-
cygwin 不是 Linux/Unix 模拟器。
-
一个简单的“hello, world” (stackoverflow.com/documentation/c/213/hello-world/795/…) 能编译、链接和运行吗?
-
“不提供运行选项”错误什么?只需通过
./myprogramname... 运行它即可:-S -
任何方式:指定库时的顺序很重要,正如 Chris Dodd 的回答所指出的那样。
-
所以这可能是一个骗子,例如这个:stackoverflow.com/q/8140494/694576
标签: c windows shell gcc cygwin