"make" не распознается как внутренняя или внешняя команда, работающая программа или командный файл - Windows 7
У меня Windows 7, и я пытался использовать команду "make", но "make" не распознается как внутренняя или внешняя команда.
я сделал Start -> cmd -> run -> make
, который выводит:
'make' не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
Затем я набрал "mingw32-make" вместо "make" (Start -> cmd -> run -> mingw32-make
) и я получаю такой же вывод:
"mingw32-make" не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
Что мне делать дальше, чтобы решить эту проблему?
8 ответов
Ваша проблема, скорее всего, что оболочка не знает, где найти ваш make
программа. Если вы хотите использовать его "из любого места", то вы должны сделать это, иначе вам нужно будет добавлять полный путь каждый раз, когда вы хотите вызвать его, что довольно громоздко. Например:
"c:\program files\gnuwin32\bin\make.exe" option1=thisvalue option2=thatvalue
Это должно быть взято в качестве примера, на XP это выглядело примерно так, я не могу сказать на W7. Но gnuwin32 раньше предоставлял полезные пакеты "linux-world" для Windows. Проверьте информацию о вашем провайдере для марки.
Таким образом, чтобы избежать ввода пути, вы можете добавить путь к PATH
переменная окружения. Вы найдете это легко. Чтобы убедиться, что он зарегистрирован ОС, откройте консоль (запустите cmd.exe
) и входя $PATH
должен дать вам список путей по умолчанию. Проверьте, что местоположение вашего make
программа есть.
В Windows10 я решил эту проблему, добавив "C:\MinGW\bin" в Path, затем вызвал его с помощью MinGW32-make not make
Это старый вопрос, но ни один из ответов здесь не обеспечивает достаточного контекста для начинающего, чтобы выбрать, какой из них выбрать.
Что такое make
?
make
это традиционная утилита Unix, которая читает Makefile
решить, какие программы запускать для достижения конкретной цели. Как правило, эта цель заключается в создании единого программного обеспечения; но make
Он достаточно общий, чтобы его можно было использовать и для различных других задач, таких как сборка PDF из коллекции исходных файлов TeX или извлечение новейших версий каждого из набора веб-страниц.
Помимо инкапсуляции шагов для достижения отдельной цели, make
сокращает время обработки, избегая повторного выполнения шагов, которые уже выполнены. Это делается путем сравнения отметок времени между зависимостями; если A зависит от B, но A новее, чем B, то нет необходимости make A
, Конечно, для того, чтобы это работало должным образом, Makefile
Необходимо документировать все такие зависимости.
A: B
commands to produce A from B
Обратите внимание, что отступ должен состоять из буквального символа табуляции. Это распространенная ошибка новичка.
Общие версии make
Оригинал make
был довольно пешеходным. Его линия продолжается и по сей день в BSD make
из которого nmake
выводится Грубо говоря, эта версия предоставляет make
функциональность, определенная POSIX, с небольшими улучшениями и вариациями.
GNU make
напротив, значительно расширяет формализм до такой степени, что GNU Makefile
вряд ли будет работать с другими версиями (или иногда даже с более старыми версиями GNU make
). Существует соглашение для вызова таких файлов GNUmakefile
вместо Makefile
, но это соглашение широко игнорируется, особенно на платформах, таких как Linux, где GNU make
является стандартом де-факто make
,
Контрольные признаки того, что Makefile
использует GNU make
конвенции являются использование :=
вместо =
для присвоения переменных (хотя это не только функция GNU) и множество функций, таких как $(shell ...)
, $(foreach ...)
, $(patsubst ...)
и т.п.
Так что мне нужно?
Ну, это действительно зависит от того, чего вы надеетесь достичь.
Если программное обеспечение, которое вы собираетесь построить, имеет vcproj
файл или аналогичный, вы, вероятно, хотите использовать это вместо, а не пытаться использовать make
совсем.
В общем случае MinGW make
это Windows-порт GNU make
для Windows, как правило, должен справиться с любым Makefile
Вы бросаете на это.
Если вы знаете, что программное обеспечение было написано для использования nmake
и вы уже установили его, или его легко получить, может быть, пойти с этим.
Вы должны понимать, что если программное обеспечение не было написано или явно портировано для Windows, оно вряд ли скомпилируется без существенных изменений. В этом сценарии, получение make
запуск - это наименьшая из ваших проблем, и вам понадобится хорошее понимание различий между исходной платформой и Windows, чтобы иметь возможность справиться с этим самостоятельно.
Более подробно, если Makefile
содержит команды Unix, такие как grep
или же curl
или же yacc
тогда в вашей системе тоже должны быть установлены эти команды. Но, помимо этого, C или C++ (или, в более общем случае, исходный код на любом языке), который был написан для другой платформы, могут просто не работать - вообще или, как и ожидалось (что часто хуже), - в Windows.
Если у вас уже установлен MinGW в Windows 7, просто сделайте следующее:
- Сделайте еще одну копию
C:\MinGW\bin\mingw32-make.exe
файл в той же папке. - Переименуйте имя файла из
mingw32-make.exe
вmake.exe
, - Запустите команду make снова.
Проверено, работает в моем ноутбуке для вышеуказанных шагов.
- Сначала убедитесь, что у вас установлен MinGW.
- В диспетчере установки MinGW проверьте, есть ли у вас
mingw32-make
пакет установлен. - Проверьте, добавили ли вы папку MinGW bin в PATH. тип
PATH
в командной строке и найдите папку. Или на Windows 10 перейти кControl Panel\System and Security\System --> Advanced system settings --> Environment Variables --> System Variables
находитьPath
переменная, выберите,Edit
и проверьте, если это там. Если не просто добавить это! - Как объясняется здесь, создайте новый файл в любой из ваших папок PATH. Например создать
mingwstartup.bat
в папке bin MinGW. написать строкуdoskey make=mingw32-make.exe
внутри сохраните и закройте его. - откройте редактор реестра, запустив
regedit
, Как объяснено здесь, вHKEY_LOCAL_MACHINE
или жеHKEY_CURRENT_USER
идти к\Software\Microsoft\Command Processor
щелкните правой кнопкой мыши на правой панелиNew --> Expandable String Value
и назовите этоAutoRun
, дважды щелкните и введите путь к вашему.bat-файлу в качестве значения данных (например,"C:\MinGW\bin\mingwstartup.bat"
) результат должен выглядеть так:
теперь каждый раз, когда вы открываете новый терминал make
команда запустит mingw32-make.exe
, Я надеюсь, что это помогает.
Для исправленной в окне 10 ошибки make'не распознается как внутренняя или внешняя команда.
Загрузите MinGW - Minimalist GNU для Windows отсюда https://sourceforge.net/projects/mingw/
установить это
Во время установки отметьте все базовые установочные пакеты, как показано на рисунке.
Применять изменения
После завершения установки скопируйте C:\MinGW\bin и вставьте в системную переменную
Откройте свойства MyComputer и следуйте инструкциям на изображении.
Вам также может потребоваться установить это
Как уже предлагали другие ответы, вы должны иметь MinGW
установлены. Дополнительная часть заключается в добавлении следующих двух папок в PATH
переменная окружения.
- C: \ MinGW \ Bin
- C: \ MinGW \ MSYS \1,0 \ Bin
Очевидно, настроить путь в зависимости от того, где вы установили MinGW. Кроме того, не забудьте открыть новый терминал командной строки.
'make' - это команда для UNIX/Linux. Вместо этого используйте команду "nmake" в MS Windows. Или лучше использовать эмулятор, такой как CYGWIN.
Я использую Windows 8. У меня была такая же проблема. Я добавил путь "C:\MinGW\bin" в системную переменную среды с именем "path", после чего он заработал. Может быть, вы можете попробовать то же самое. Надеюсь, это поможет!
Выполните поиск make.exe с помощью функции поиска, при обнаружении запишите абсолютный путь к файлу. Вы можете сделать это, щелкнув правой кнопкой мыши на имени файла в результатах поиска, а затем в свойствах или открыв папку местоположения (не уверен в точной формулировке, я не использую английскую локаль).
При открытии консоли командной строки (cmd) вместо ввода make
введите полный путь и имя, например C:\Windows\System32\java
(это для Java...).
В качестве альтернативы, если вы не хотите каждый раз указывать полный путь, у вас есть следующие возможности:
- делать
C:\Windows\System32\
текущий рабочий каталог, используяcd
на уровне cmd. - добавлять
C:\Windows\System32\
вам переменная среды PATH.
Refs:
====== запустить 'cmd' как администратор 2, используя 'setx' ===== setx scoop "C: \ Users \% username% \ scoop" / M
echo %scoop%
setx scoopApps "%scoop%\apps" /M
echo %scoopApps%
scoop install make
======= Этап 3. Создание переменной среды makePath ===
setx makePath "%scoopApps%/make" /M
echo %makePath%
setx makeBin "%makePath%/Bin" /M
echo %makeBin%
setx Path "%Path%;%makeBin%" /M
echo %Path%