
Я работаю на cygwin. Большинство команд Unix работают нормально. Также я могу компилировать с помощью g++ и gcc, но получаю следующую ошибку при выполнении make:
/cygdrive/b/tpm/src
$ make -f makefile.mak
"c:/program files/mingw/bin/gcc.exe" -Wall -Wnested-externs -ggdb -O0 -c -
DTPM_WINDOWS -I"c:/program files/MinGW/include" -I"c:/program
files/openssl/include" -I../utils -I. -DNO_BIT_FIELD_STRUCTURES AlgorithmCap.c -o AlgorithmCap.o
make: *** [makefile.mak:85: AlgorithmCap.o] Error 1
Обратите внимание, что я загрузил пакет make и добавил bin в путь.
решение1
Основная ошибка показана в этой строке:
$ make -f makefile.mak "c:/program files/mingw/bin/gcc.exe" -Wall -Wnested-externs -ggdb -O0 -c -
Эта ошибка показывает, что cygwin make
находит путь компилятора C, т.е. $(CC)
в C:\Program Files\mingw\bin\gcc.exe
. Здесь OP установил mingw и cygwin на одной машине. Когда соответствующий установщик устанавливает cygwin и mingw, он добавляет папку /bin
в %PATH%
системную переменную среды. Следовательно, во время компиляции cygwin make
захватывает первый gcc.exe
путь, который находится в каталоге mingw, и появляется ошибка.
Чтобы устранить путаницу с путями, %PATH%
переменная среды должна быть настроена правильно. Более подробную информацию о том, как редактировать переменные среды, можно найти по ссылкам ниже. Здесь я даю простую схему. Откройте диалоговое окно «Выполнить» с помощью Win+ R. Введите control.exe
его и нажмите Enter. Перейдите в раздел «Система и безопасность» > «Система» > «Дополнительные параметры системы» > «Переменные среды» > «Системные переменные» > «Путь».
Дважды щелкните по переменной "Path". Вы увидите окно "Изменить переменную среды". Удалите два пути C:\cygwin
и ключ C:\Program Files\mingw\bin
с Delete.
Теперь создайте два пакетных файла: cygwin.bat и mingw.bat. Это можно сделать в одном файле, я просто упрощаю. Скопируйте следующие строки в соответствующие пакетные файлы. Команды настроят среду для компиляции.
- Для Cygwin:
@echo off
C:
chdir C:\cygwin\bin
C:\cygwin\bin\bash.exe --login -i
- Для мингв:
@echo off
set PATH=C:\Program Files\mingw\bin;%PATH%
cmd /k