2013-06-07 4 views
1

Я пытаюсь скомпилировать код C из Cygwin в 64-разрядной Windows и вызвать исполняемый файл, используя некоторые параметры. Компиляция проходит через fine (Makefile ниже). Но когда я запускаю исполняемый файл, я получаю сообщение об ошибке cannot execute binary file.bash: невозможно выполнить двоичный файл

Быстро показывает, что в действительности бинарный файл создан для Linux.

ELF 64-битный исполняемый LSB, x86-64, версия 1 (SYSV), динамически связаны (использует общие LIBS), для 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 

ответ

4

Cygwin составляет 32 бита, а не 64 бита. Это ошибка, которую вы получаете при попытке запустить 64-разрядную программу в 32-разрядной среде.

Редактировать: О, и вы не можете скомпилировать C для Windows изнутри cygwin. Есть компиляторы C для Windows, я мало знаю о них.

+0

А, этот последний бит дает понять. – tchakravarty

+1

Попробуйте [MinGW] (http://www.mingw.org/) для использования GCC под Windows. – Kninnug

+0

Или вилка MinGW [MinGW-w64] (http://mingw-w64.sourceforge.net/), которая также поддерживает 64 бит. – ollo

Смежные вопросы