C用makefile编译错误

时间:2018-07-24 15:02:39

标签: makefile

我已经用C语言编写了一个程序,并且正在Windows的cygwin中使用一个make文件来编译该文件。在Visual Studio中可以很好地执行,但是当我尝试使用make文件时,会发生以下情况:

错误:

$ make
gcc    -c -o mathTable.o mathTable.c
mathTable.c:1:1: error: stray ‘\377’ in program
 ▒▒# i n c l u d e   < s t d l i b . h >
 ^
mathTable.c:1:2: error: stray ‘\376’ in program
 ▒▒# i n c l u d e   < s t d l i b . h >
  ^
mathTable.c:1:3: error: stray ‘#’ in program
 ▒▒# i n c l u d e   < s t d l i b . h >
   ^
mathTable.c:1:4: warning: null character(s) ignored
 ▒▒# i n c l u d e   < s t d l i b . h >
    ^
mathTable.c:1:6: warning: null character(s) ignored
 ▒▒# i n c l u d e   < s t d l i b . h >
      ^
mathTable.c:1:5: error: unknown type name ‘i’
 ▒▒# i n c l u d e   < s t d l i b . h >
     ^
...
...
...
mathTable.c:73:21: warning: null character(s) ignored
mathTable.c:73:25: warning: null character(s) ignored
mathTable.c:73:27: warning: null character(s) ignored
mathTable.c:74:1: warning: null character(s) ignored
mathTable.c:75:1: warning: null character(s) ignored
mathTable.c:75:3: warning: null character(s) ignored
mathTable.c:76:1: warning: null character(s) ignored
mathTable.c:77:1: warning: null character(s) ignored
mathTable.c:78:1: warning: null character(s) ignored
mathTable.c:79:1: warning: null character(s) ignored
make: *** [<builtin>: mathTable.o] Error 1

我开始学习C,所以我不确定是什么原因造成的。看起来很奇怪。也许与Linux有关?因为我不处理跨平台(因为我认为我不需要这样做)。

2 个答案:

答案 0 :(得分:8)

这可能是因为您的文件具有Windows UTF-16格式。也许它包含您的母语字符串或注释。 Visual C ++编译器可以理解这一点,但是GCC(Mingw)不能。以无标记的UTF-8格式保存文件。

答案 1 :(得分:7)

这不是GNU Make错误。

编译器抱怨您的源文件编码错误。您需要在gcc编译器中使用ASCII或UTF-8。

或尝试使用-finput-charset=UTF-16编译器选项。