最近在用一个比较旧的arm-linux-gcc 4.1.2去编译较新版本的linux内核,出现以下错误:
xxx.c:1: 错误: 程序中有游离的‘\357’
xxx:1: 错误: 程序中有游离的‘\273’
xxx.c:1: 错误: 程序中有游离的‘\277’
这是由于该文件是以UTF-8 BOM的形式储存的,而所用的编译器不支持这种格式。
我们可以通过以下命令先确认xxx.c文件是不是UTF-8 BOM格式:
$ cat xxx.c |hd -n 10
输出如下:
00000000 ef bb bf2f 2a 0a 20 2a 20 53 |.../*. * S|
0000000a
输出的前三个码是:ef bb bf,表示该文件是UTF-8 BOM格式。
如何去除UTF-8 BOM格式?
解决方法:
下载bomstrip工具,
下载页面是:
最新版bomstrip-9下载地址:
安装和使用方法(Ubuntu11.04下):、
sudo apt-get install ocaml
tar zxvf bomstrip-9.tgz
cd bomstrip-9/
sudo cp bomstrip.ocaml /usr/bin/
sudo chmod 777 /usr/bin/bomstrip.ocaml
使用方法:
ocaml /usr/bin/bomstrip.ocaml < input_file.c > output_file.c
其中input_file.c就是原UTF-8 BOM格式的文件,output_file.c则是去除UTF-8 BOM格式后的文件。
其他说明:
ocaml 是ocaml语言解析器;
bomstrip.ocaml文件是bomstrip-9中以ocaml语言编写的脚本,其中还有其他语言的脚本,我没有一一试验;
bomstrip使用方法,bomstrip如何使用,UTF-8 BOM错误解决方法