c - 庆典 : cannot execute binary file

标签 c gcc makefile cygwin

我正在尝试从 64 位 Windows 上的 Cygwin 中编译一些 C 代码,并使用一些参数调用可执行文件。编译顺利进行(Makefile 在下面)。但是当我运行可执行文件时,出现错误 cannot execute binary file

快速显示二进制文件确实是为 Linux 构建的。

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x7d39e30cb249d2047815de23a9df33fccf91a58f, not stripped

如何更改 Makefile 以便它针对 Windows 进行编译?


这是生成文件

.SUFFIXES: .c .u
CC= gcc

CFLAGS = -g -Wall -O3 -DHAVE_INLINE -DGSL_RANGE_CHECK_OFF
# LDFLAGS = -lm -lgsl -latlas -lgslcblas
LDFLAGS = -lm -lgsl -lgslcblas
# LDFLAGS = -lm -lgsl -latlas -lcblas
LOBJECTS= a.o b.o c.o 
LSOURCE= a.c b.c c.c 

windows: $(LOBJECTS)
    $(CC) $(LOBJECTS) -o stm $(LDFLAGS)

clean:
    -rm -f *.o

最佳答案

cygwin 是 32 位的,不是 64 位的。这是您尝试在 32 位环境中运行 64 位程序时遇到的错误。

编辑: 哦,您不能从 cygwin 内部为 Windows 编译 C。有适用于 Windows 的 C 编译器,我对它们知之甚少。

关于c - 庆典 : cannot execute binary file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16991050/

相关文章:

c++ - 已编译库的 header 无法相互访问

Makefiles : using `wildcard` vs. `find` 用于指定源文件

linux - 测试目标文件是否独立于操作系统

c - 源文件找不到头文件

c - GCC 的 sqrt() 编译后如何工作?使用哪种root方法?牛顿-拉夫森?

c - C 中每轮 INT 降低 10%

使用转换 (STL) 时的 C++ 错误

c - 当程序使用自定义入口点(使用 gcc 7.4.0)运行时,scanf 会产生段错误

c - 一起使用 '#' 和 '##' 预处理运算符

gcc 的 __cxa_demangle 的 C 等效项?