1

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 用にコンパイルするにはどうすればよいですか?


これがメイクファイルです

.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
4

1 に答える 1

4

cygwin は 64 ビットではなく 32 ビットです。これは、32 ビット環境で 64 ビット プログラムを実行しようとしたときに発生するエラーです。

編集: ああ、Windows 用の C を cygwin 内からコンパイルすることはできません。Windows 用の C コンパイラがありますが、私はそれらについてほとんど知りません。

于 2013-06-07T18:58:04.410 に答える