1 现象
在windows下使用GCC编译工程时,编译通过。使用同样的工程代码,放到Linux (Ubuntu)下编译报错。
报错信息如下:
Makefile:1: *** 多个目标匹配。 停止。
2 原因
1.widows下编译器编译的时候生成的.d 、.o等中间文件Linux下的编译器不认。
2. Windows下的makefile文件中的换行符为“\r\n”,即CRLF。在Linux系统下换行符实际应该为“\n”,即LF。
3. makefile中存在不符合makefile语法的语句,导致编译器无法识别。
3 解决方法
- 删除在Windows下编译生成的所有文件。
例如,我删除的是_build整个文件夹。
- 使用Notepad++等文本编辑器,将windows文件转为Unix文件。
转换前的效果如下:
转换后的效果如下: