报错Syntax error
背景
- Platform: M55S
- OS: Linux
- Kernel: 4
问题
我自己编译没问题,同事在他的虚拟机里编译我的代码时报错:
Syntax error: end of file unexpected
主要log如下:
./make_all.sh: 5: ./make_all.sh: source: not found
...
/opt/vtcs_toolchain/vienna/usr/bin/arm-linux-gcc: 2: /opt/vtcs_toolchain/vienna/usr/bin/arm-linux-gcc: Syntax error: end of file unexpected
分析
造成Syntax error
主要原因有:
脚本语法错误
比如没有循环没有结束标记等
解决: 检查语法,没有问题
字符格式问题
Windows和Linux字符格式问题,win下写的shell脚本可能是DOS格式,在Linux下面会有莫名其妙的字符,但代码都没改过,我们不是这个原因
解决:
Linux下:
使用vi检查:vi dos.txt :set fileformat=unix :w
看是否有莫名其妙的字符,删掉莫名其妙的字符,保存
或者使用dos2unix
工具转化为Unix兼容的格式Win下:使用Notepad++或者VS code检查,重新保存为Utf8Unix兼容的格式
兼容性问题
因为linux将sh默认指向了dash,而不是bash,我们遇到的问题主要是这个原因
解决: 修改默认的shellsudo dpkg-reconfigure dash
选择No
评论