代码之家  ›  专栏  ›  技术社区  ›  Wizard

用makefile编译错误

  •  -1
  • Wizard  · 技术社区  · 6 年前

    我已经用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 回复  |  直到 6 年前
        1
  •  8
  •   ddbug    6 年前

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

        2
  •  7
  •   Maxim Egorushkin    6 年前

    这不是GNU make错误。

    编译器抱怨源文件编码错误。您需要将ASCII或UTF-8与 gcc 编译程序。

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