Estou tentando construir um projeto, bootloader para dispositivos AVR fornecidos pela LUFA , que usa GNU Make ( make
), mas estou no Windows. Embora o Windows, por si só, não seja necessariamente o problema, está claramente atrapalhando as coisas.
Instalei make
e outros programas auxiliares (grep, mingw, ...) via Chocolatey. Eu também instalei o Cygwin/MinGW neles às vezes, mas acredito que não estou usando esses binários ... mas talvez eles não estejam ajudando ...
Estou executando make
e recebo um erro antes mesmo que o primeiro alvo make seja executado:
#...
test:
echo test
#...
Resultado:
C:\Users\camer\git\Project\bootloader>make
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
echo test
test
make -d
parece mostrar o que está causando os The system cannot find the path specified.
erros:
PS C:\Users\camer\git\Project\bootloader> make -d
GNU Make 4.3
Built for Windows32
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Reading makefile 'Makefile'...
CreateProcess(C:\WINDOWS\system32\hostname.exe,hostname,...)
Main thread handle = 00000110
Reading makefile 'local.HOSTNAME.mk' (search path) (don't care) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/LUFA/lufa-sources.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/LUFA/lufa-gcc.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/DMBS/DMBS/core.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/DMBS/DMBS/cppcheck.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/DMBS/DMBS/core.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/DMBS/DMBS/doxygen.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/DMBS/DMBS/core.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/DMBS/DMBS/dfu.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/DMBS/DMBS/core.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/DMBS/DMBS/gcc.mk' (search path) (no ~ expansion)...
Reading makefile 'LUFA/LUFA/Build/DMBS/DMBS/core.mk' (search path) (no ~ expansion)...
Creating temporary batch file C:\Users\camer\AppData\Local\Temp\make14552-1.bat
Batch file contents:
@echo off
mkdir -p obj 2> /dev/null
CreateProcess(C:\Users\camer\AppData\Local\Temp\make14552-1.bat,C:\Users\camer\AppData\Local\Temp\make14552-1.bat,...)
The system cannot find the path specified.
Cleaning up temporary batch file C:\Users\camer\AppData\Local\Temp\make14552-1.bat
...
Portanto, parece que make
está tentando alguma solução alternativa no Windows que cria um arquivo de lote temporário ( .bat
) e o executa para obter alguma saída. Ou talvez seja uma prática padrão e crie um .sh
script no Linux... De qualquer forma, parece ser isso que está falhando por algum motivo.
Olhando para os Makefiles ( ), incluídos no LUFA LUFA/LUFA/Build/DMBS/DMBS/*.mk
, posso ver as instruções que estão tentando ser executadas:
#...
# Create the output object file directory if it does not exist and add it to the virtual path list
$(shell mkdir -p $(OBJDIR) 2> /dev/null)
#...
Então, algo sobre o built-in do Make shell
está falhando no Windows 10.
Curiosamente, esses erros não fazem a compilação falhar. Você pode ver no meu exemplo que echo test
ainda é executado.
Acontece que isso está causando uma série de outros problemas com os Makefiles do LUFA. O shell
builtin é usado para preencher muitos make vars e muitas etapas de compilação esperam que essas variáveis não sejam vazias. Como a shell
chamada falha sem derrubar toda a execução, tudo quebra.
Não tenho certeza de onde procurar para resolver meu problema. Será que estou usando uma versão ruim do make
? Eu tentei alguns make.exe
binários de lugares diferentes e todos eles têm esse erro (se a memória servir). Tenho certeza de que esses arquivos make funcionam em uma instalação anterior do Windows, mas esse computador agora está offline, então não posso comparar.
Obrigado pelo olhar! Felicidades!