Эта ошибка может возникнуть при кросскомпиляции бинарных файлов для Windows в Linux.
Но я столкнулся с этой проблемой при попытке компиляции бинарников для Linux. О Windows у меня и мысли не было.
Кстати, кусочек лога:
x86_64-w64-mingw32-gcc -Wall -W -pipe -O2 -D_WINDOWS -o cleanup-rules.exe cleanup-rules.c
make: x86_64-w64-mingw32-gcc: Команда не найдена
make: *** [windows] Ошибка 127
Если вас не интересует кросскомпиляция (как в моём случае), то, возможно, вместо установки ненужных пакетов вам больше понравится идея отредактировать файл Makefile?
К примеру, исходный файл выглядел так:
##
## Makefile
##
CFLAGS = -Wall -W -pipe -O2
all: clean release
release: linux windows osx
$(STRIP_LINUX) *.bin
$(STRIP_WINDOWS) *.exe
$(STRIP_OSX) *.app
mv *.bin ../bin
mv *.exe ../bin
mv *.app ../bin
cp *.pl ../bin
clean:
rm -f ../bin/*.bin ../bin/*.exe ../bin/*.app ../bin/*.pl
rm -f *.bin *.exe *.app
##
## LINUX
##
CC_LINUX = gcc
STRIP_LINUX = strip
CFLAGS_LINUX = $(CFLAGS) -D_LINUX
linux:
${CC_LINUX} ${CFLAGS_LINUX} -o cleanup-rules.bin cleanup-rules.c
${CC_LINUX} ${CFLAGS_LINUX} -o combinator.bin combinator.c
${CC_LINUX} ${CFLAGS_LINUX} -o combinator3.bin combinator3.c
${CC_LINUX} ${CFLAGS_LINUX} -o combipow.bin combipow.c
${CC_LINUX} ${CFLAGS_LINUX} -o cutb.bin cutb.c
${CC_LINUX} ${CFLAGS_LINUX} -o expander.bin expander.c
${CC_LINUX} ${CFLAGS_LINUX} -o gate.bin gate.c
${CC_LINUX} ${CFLAGS_LINUX} -o generate-rules.bin generate-rules.c
${CC_LINUX} ${CFLAGS_LINUX} -o hcstatgen.bin hcstatgen.c -lm
${CC_LINUX} ${CFLAGS_LINUX} -o keyspace.bin keyspace.c
${CC_LINUX} ${CFLAGS_LINUX} -o len.bin len.c
${CC_LINUX} ${CFLAGS_LINUX} -o mli2.bin mli2.c
${CC_LINUX} ${CFLAGS_LINUX} -o morph.bin morph.c
${CC_LINUX} ${CFLAGS_LINUX} -o permute.bin permute.c
${CC_LINUX} ${CFLAGS_LINUX} -o permute_exist.bin permute_exist.c
${CC_LINUX} ${CFLAGS_LINUX} -o prepare.bin prepare.c
${CC_LINUX} ${CFLAGS_LINUX} -o req-include.bin req-include.c
${CC_LINUX} ${CFLAGS_LINUX} -o req-exclude.bin req-exclude.c
${CC_LINUX} ${CFLAGS_LINUX} -o rli.bin rli.c
${CC_LINUX} ${CFLAGS_LINUX} -o rli2.bin rli2.c
${CC_LINUX} ${CFLAGS_LINUX} -o splitlen.bin splitlen.c
${CC_LINUX} ${CFLAGS_LINUX} -o strip-bsr.bin strip-bsr.c
${CC_LINUX} ${CFLAGS_LINUX} -o strip-bsn.bin strip-bsn.c
##
## WINDOWS
##
CC_WINDOWS = x86_64-w64-mingw32-gcc
STRIP_WINDOWS = x86_64-w64-mingw32-strip
CFLAGS_WINDOWS = $(CFLAGS) -D_WINDOWS
GLOB_WINDOWS = /usr/x86_64-w64-mingw32/lib/CRT_glob.o
windows:
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o cleanup-rules.exe cleanup-rules.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o combinator.exe combinator.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o combinator3.exe combinator3.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o combipow.exe combipow.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o cutb.exe cutb.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o expander.exe expander.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o gate.exe gate.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o generate-rules.exe generate-rules.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o hcstatgen.exe hcstatgen.c -lm
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o keyspace.exe keyspace.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o len.exe len.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o mli2.exe mli2.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o morph.exe morph.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o permute.exe permute.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o permute_exist.exe permute_exist.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o prepare.exe prepare.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o req-include.exe req-include.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o req-exclude.exe req-exclude.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o rli.exe rli.c ${GLOB_WINDOWS}
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o rli2.exe rli2.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o splitlen.exe splitlen.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o strip-bsr.exe strip-bsr.c
${CC_WINDOWS} ${CFLAGS_WINDOWS} -o strip-bsn.exe strip-bsn.c
##
## OSX
##
CC_OSX = i686-apple-darwin10-gcc
STRIP_OSX = i686-apple-darwin10-strip
CFLAGS_OSX = $(CFLAGS) -D_OSX
osx:
${CC_OSX} ${CFLAGS_OSX} -o cleanup-rules.app cleanup-rules.c
${CC_OSX} ${CFLAGS_OSX} -o combinator.app combinator.c
${CC_OSX} ${CFLAGS_OSX} -o combinator3.app combinator3.c
${CC_OSX} ${CFLAGS_OSX} -o combipow.app combipow.c
${CC_OSX} ${CFLAGS_OSX} -o cutb.app cutb.c
${CC_OSX} ${CFLAGS_OSX} -o expander.app expander.c
${CC_OSX} ${CFLAGS_OSX} -o gate.app gate.c
${CC_OSX} ${CFLAGS_OSX} -o generate-rules.app generate-rules.c
${CC_OSX} ${CFLAGS_OSX} -o hcstatgen.app hcstatgen.c -lm
${CC_OSX} ${CFLAGS_OSX} -o keyspace.app keyspace.c
${CC_OSX} ${CFLAGS_OSX} -o len.app len.c
${CC_OSX} ${CFLAGS_OSX} -o mli2.app mli2.c
${CC_OSX} ${CFLAGS_OSX} -o morph.app morph.c
${CC_OSX} ${CFLAGS_OSX} -o permute.app permute.c
${CC_OSX} ${CFLAGS_OSX} -o permute_exist.app permute_exist.c
${CC_OSX} ${CFLAGS_OSX} -o prepare.app prepare.c
${CC_OSX} ${CFLAGS_OSX} -o req-include.app req-include.c
${CC_OSX} ${CFLAGS_OSX} -o req-exclude.app req-exclude.c
${CC_OSX} ${CFLAGS_OSX} -o rli.app rli.c
${CC_OSX} ${CFLAGS_OSX} -o rli2.app rli2.c
${CC_OSX} ${CFLAGS_OSX} -o splitlen.app splitlen.c
${CC_OSX} ${CFLAGS_OSX} -o strip-bsr.app strip-bsr.c
${CC_OSX} ${CFLAGS_OSX} -o strip-bsn.app strip-bsn.c
После моих правок он сократился до такого вида:
##
## Makefile
##
CFLAGS = -Wall -W -pipe -O2
all: clean release
release: linux
$(STRIP_LINUX) *.bin
mv *.bin ../bin
cp *.pl ../bin
clean:
rm -f ../bin/*.bin ../bin/*.exe ../bin/*.app ../bin/*.pl
rm -f *.bin *.exe *.app
##
## LINUX
##
CC_LINUX = gcc
STRIP_LINUX = strip
CFLAGS_LINUX = $(CFLAGS) -D_LINUX
linux:
${CC_LINUX} ${CFLAGS_LINUX} -o cleanup-rules.bin cleanup-rules.c
${CC_LINUX} ${CFLAGS_LINUX} -o combinator.bin combinator.c
${CC_LINUX} ${CFLAGS_LINUX} -o combinator3.bin combinator3.c
${CC_LINUX} ${CFLAGS_LINUX} -o combipow.bin combipow.c
${CC_LINUX} ${CFLAGS_LINUX} -o cutb.bin cutb.c
${CC_LINUX} ${CFLAGS_LINUX} -o expander.bin expander.c
${CC_LINUX} ${CFLAGS_LINUX} -o gate.bin gate.c
${CC_LINUX} ${CFLAGS_LINUX} -o generate-rules.bin generate-rules.c
${CC_LINUX} ${CFLAGS_LINUX} -o hcstatgen.bin hcstatgen.c -lm
${CC_LINUX} ${CFLAGS_LINUX} -o keyspace.bin keyspace.c
${CC_LINUX} ${CFLAGS_LINUX} -o len.bin len.c
${CC_LINUX} ${CFLAGS_LINUX} -o mli2.bin mli2.c
${CC_LINUX} ${CFLAGS_LINUX} -o morph.bin morph.c
${CC_LINUX} ${CFLAGS_LINUX} -o permute.bin permute.c
${CC_LINUX} ${CFLAGS_LINUX} -o permute_exist.bin permute_exist.c
${CC_LINUX} ${CFLAGS_LINUX} -o prepare.bin prepare.c
${CC_LINUX} ${CFLAGS_LINUX} -o req-include.bin req-include.c
${CC_LINUX} ${CFLAGS_LINUX} -o req-exclude.bin req-exclude.c
${CC_LINUX} ${CFLAGS_LINUX} -o rli.bin rli.c
${CC_LINUX} ${CFLAGS_LINUX} -o rli2.bin rli2.c
${CC_LINUX} ${CFLAGS_LINUX} -o splitlen.bin splitlen.c
${CC_LINUX} ${CFLAGS_LINUX} -o strip-bsr.bin strip-bsr.c
${CC_LINUX} ${CFLAGS_LINUX} -o strip-bsn.bin strip-bsn.c
В этом виде компиляция прошла без ошибок.
Кстати, если бы установил необходимые пакеты для кросскомпиляции под Windows, то сразу после неё меня ждала бы следующая ошибка: отсутствие файлов для кросскомпиляции под OSX.
Если же вы компилируете именно для Windows, то для решения ошибки «x86_64-w64-mingw32-gcc: Команда не найдена» вам нуно установить следующий пакет:
sudo apt-get install mingw-w64