当我想编译一些Linux内核时,我会得到这样的消息:
.../kernel-source/scripts/mkmakefile: line 5: 这是因为文件使用的是DOS-EOL,而不是普通的文件。我通常能够用dos2unix修补那些有问题的文件,但在这种情况下,mkmakefile文件是由其他脚本生成的(使用Yocto,但我在Android上也遇到了同样的问题)。我知道CygWin有一个CygWin bash选项,但在Linux上没有任何选项。有没有一种方法/选项可以告诉bash忽略\r字符(即,\r\n等同于\n)?编辑:错误出现在shebang和第一个可执行行之间的第一个空行上(注释之间的空行)。Yocto日志(实际上是Petalinux,Xilinx的基于Yocto的框架)显示: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: 第53行是一个EOF标记,没有任何换行符(来自cat << EOF > Makefile)我猜生成的脚本中的最后一行是EOF^M,它与预期的EOF不匹配(没有\r/^M)。\r': command not found这是因为文件使用的是DOS-EOL,而不是普通的文件。我通常能够用D1修补那些有问题的文件,但在这种情况下,D2文件是由其他脚本生成的(使用Yocto,但我在Android上也遇到了同样的问题)。我知道CygWin有一个CygWin bash选项,但在Linux上没有任何选项。有没有一种方法/选项可以告诉bash忽略D4字符(即,D5等同于D6)?编辑:错误出现在shebang和第一个可执行行之间的第一个空行上(注释之间的空行)。Yocto日志(实际上是Petalinux,Xilinx的基于Yocto的框架)显示:A7第53行是一个D8标记,没有任何换行符(来自D9)我猜生成的脚本中的最后一行是D10,它与预期的D11不匹配(没有D12/D13)。\r': command not found
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 11: 第53行是一个D8标记,没有任何换行符(来自D9)我猜生成的脚本中的最后一行是D10,它与预期的D11不匹配(没有D12/D13)。\r': command not found这是因为文件使用的是DOS-EOL,而不是普通的文件。我通常能够用D1修补那些有问题的文件,但在这种情况下,D2文件是由其他脚本生成的(使用Yocto,但我在Android上也遇到了同样的问题)。
我知道CygWin有一个CygWin bash选项,但在Linux上没有任何选项。
有没有一种方法/选项可以告诉bash忽略D4字符(即,D5等同于D6)?
编辑:错误出现在shebang和第一个可执行行之间的第一个空行上(注释之间的空行)。
Yocto日志(实际上是Petalinux,Xilinx的基于Yocto的框架)显示:
A7
第53行是一个D8标记,没有任何换行符(来自D9)
我猜生成的脚本中的最后一行是D10,它与预期的D11不匹配(没有D12/D13)。
\r': command not found .../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 12:
第53行是一个D8标记,没有任何换行符(来自D9)
我猜生成的脚本中的最后一行是D10,它与预期的D11不匹配(没有D12/D13)。
\r': command not found
这是因为文件使用的是DOS-EOL,而不是普通的文件。我通常能够用D1修补那些有问题的文件,但在这种情况下,D2文件是由其他脚本生成的(使用Yocto,但我在Android上也遇到了同样的问题)。
我知道CygWin有一个CygWin bash选项,但在Linux上没有任何选项。
有没有一种方法/选项可以告诉bash忽略D4字符(即,D5等同于D6)?
编辑:错误出现在shebang和第一个可执行行之间的第一个空行上(注释之间的空行)。
Yocto日志(实际上是Petalinux,Xilinx的基于Yocto的框架)显示:
A7
第53行是一个D8标记,没有任何换行符(来自D9)
我猜生成的脚本中的最后一行是D10,它与预期的D11不匹配(没有D12/D13)。
\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
第53行是一个D8标记,没有任何换行符(来自D9)
我猜生成的脚本中的最后一行是D10,它与预期的D11不匹配(没有D12/D13)。
\r': command not found
这是因为文件使用的是DOS-EOL,而不是普通的文件。我通常能够用D1修补那些有问题的文件,但在这种情况下,D2文件是由其他脚本生成的(使用Yocto,但我在Android上也遇到了同样的问题)。
我知道CygWin有一个CygWin bash选项,但在Linux上没有任何选项。
有没有一种方法/选项可以告诉bash忽略D4字符(即,D5等同于D6)?
编辑:错误出现在shebang和第一个可执行行之间的第一个空行上(注释之间的空行)。
Yocto日志(实际上是Petalinux,Xilinx的基于Yocto的框架)显示:
A7
第53行是一个D8标记,没有任何换行符(来自D9)
我猜生成的脚本中的最后一行是D10,它与预期的D11不匹配(没有D12/D13)。
发布于 2018-04-10 12:24:10
不,没有办法/选项告诉bash只忽略\r字符(即\r\n等同于\n)。
文件可以存储在任何一个文件结束的文件系统中,而bash对此没有问题。
发布于 2018-04-11 08:03:13
问题的根源似乎是构建过程内部使用git造成的。在Linux下,确保将autocrlf设置为input:
git config --global core.autocrlf input在那之后,建筑运作得很好。
https://unix.stackexchange.com/questions/436755
复制相似问题