Acontece quando eu quero compilar um kernel Linux que de alguma forma acabo com essas mensagens:
.../kernel-source/scripts/mkmakefile: line 5: $'\r': command not found
Isso ocorre porque o arquivo é com DOS-EOL em vez do normal. Eu geralmente sou capaz de corrigir esses arquivos problemáticos com um dos2unix
, mas nesse caso, o arquivo mkmakefile
é gerado por algum outro script (usando o Yocto Linux Framework, mas eu tive o mesmo problema com o processo de criação do Android). / p>
Eu sei que há uma opção igncr
bash para o CygWin, mas nada no bash do Linux.
Existe uma maneira / opção de dizer ao bash para ignorar \r
caracteres (ou seja, ter \r\n
equivalente a \n
)?
EDITAR:
Os erros aparecem nas primeiras linhas em branco entre o shebang e a primeira linha executável (linhas em branco entre os comentários).
Os logs do Yocto (que na verdade são Petalinux, Xilinx 'framework baseado em Yocto) mostram:
DEBUG: Executing python function sysroot_cleansstate
DEBUG: Python function sysroot_cleansstate finished
DEBUG: Executing python function check_oldest_kernel
DEBUG: Python function check_oldest_kernel finished
DEBUG: Executing shell function do_configure
NOTE: make HOSTCC=gcc HOSTCPP=gcc -E -C .../project/build/tmp/work-shared/plnx_arm/kernel-source O=.../project/build/tmp/work/plnx_arm-xilinx-linux-gnueabi/linux-xlnx/4.9-xilinx-v2017.4+gitAUTOINC+b450e900fd-r0/linux-plnx_arm-standard-build oldnoconfig
NOTE: make HOSTCC=gcc HOSTCPP=gcc -E -C .../project/build/tmp/work-shared/plnx_arm/kernel-source O=.../project/build/tmp/work/plnx_arm-xilinx-linux-gnueabi/linux-xlnx/4.9-xilinx-v2017.4+gitAUTOINC+b450e900fd-r0/linux-plnx_arm-standard-build oldconfig
ERROR: oe_runmake failed
make: Entering directory '.../project/build/tmp/work-shared/plnx_arm/kernel-source'
make[1]: Entering directory '.../project/build/tmp/work/plnx_arm-xilinx-linux-gnueabi/linux-xlnx/4.9-xilinx-v2017.4+gitAUTOINC+b450e900fd-r0/linux-plnx_arm-standard-build'
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 5: $'\r': command not found
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 11: $'\r': command not found
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 12: $'\r': command not found
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 52: warning: here-document at line 24 delimited by end-of-file (wanted 'EOF')
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 53: syntax error: unexpected end of file
make[1]: *** [.../project/build/tmp/work-shared/plnx_arm/kernel-source/Makefile:461: outputmakefile] Error 2
make[1]: Leaving directory '.../project/build/tmp/work/plnx_arm-xilinx-linux-gnueabi/linux-xlnx/4.9-xilinx-v2017.4+gitAUTOINC+b450e900fd-r0/linux-plnx_arm-standard-build'
make: *** [Makefile:150: sub-make] Error 2
A linha 53 é um único marcador EOF
, sem nenhuma nova linha (de cat << EOF > Makefile
)
Eu acho que a última linha no script gerado é EOF^M
, que não corresponde ao esperado EOF
(sem o \r
/ ^M
).