方案商提供的SDK,在X86平台上使用gcc编译正常,运行也正常。
但是使用mipsel-linux-gcc交叉编译时,从代码第一行开始报错,如下图:
error:stray'\239'in program
error:stray'\387'in program
原因:
在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯)。BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。
UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。所以不含 BOM 的 UTF-8 才是标准形式。
解决办法:
使用vi打开代码,设置nobomb项。
:set nobomb
保存退出即可。
或者,在系统的vim配置文件中添加设置,再重新打开vim:
vim ~/.vimrc