【问题标题】:bash: cannot execute binary filebash:无法执行二进制文件
【发布时间】:2013-06-07 18:53:42
【问题描述】:

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

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

ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),动态 链接(使用共享库),对于 GNU/Linux 2.6.24, BuildID[sha1]=0x7d39e30cb249d2047815de23a9df33fccf91a58f,未剥离

如何更改 Makefile 以使其能够针对 Windows 进行编译?


这是 Makefile

.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

【问题讨论】:

    标签: c gcc makefile cygwin


    【解决方案1】:

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

    编辑: 哦,你不能在 cygwin 中为 Windows 编译 C。有适用于 Windows 的 C 编译器,我对它们知之甚少。

    【讨论】:

    • 或者MinGW fork MinGW-w64,同样支持64位。
    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 2021-05-09
    • 2014-04-22
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多