【问题标题】:Git breaks my program?Git 破坏了我的程序?
【发布时间】:2014-03-18 02:45:43
【问题描述】:

我在 master 分支下编写了几个程序,我使用 GNUmakefile 编译它们。今天,在我创建了一个新分支 v4.3 并切换到新分支,然后编译后,我收到以下错误消息:

lucerne:lucerne$ make primes
g++-mp-4.8 -std=gnu++0x -g -O2 -W -Wall -Wextra  -MD -MF .deps/primes.d -MP  -I. -c -o primes.o primes.cpp
In file included from primes.cpp:2:0:
./vector:1:1: error: stray '\317' in program
 ????_TEXT
 ^
./vector:1:1: error: stray '\372' in program
./vector:1:1: error: stray '\355' in program
./vector:1:1: error: stray '\376' in program
./vector:1:1: error: stray '\7' in program
./vector:1:6: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '\1' in program
./vector:1:1: error: stray '\3' in program
./vector:1:10: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '\200' in program

当我切换到 master 分支时,我收到了相同的错误消息。但是,如果我将文件重命名为其他名称,例如“new_primes.cpp”,那么make file 不会引起任何问题。 GNUmakefile 或 prime.cpp 均未修改。我也没有安装任何额外的软件包。它也不是编辑器——我使用的是 emacs 和 TextWrangler。是什么导致了这个问题?

【问题讨论】:

    标签: c++ git emacs compilation makefile


    【解决方案1】:

    当源文件或在这种情况下包含的文件是二进制文件时,会发生 GCC 生成的错误。这很容易通过创建一个包含单个包含到二进制文件的源文件来重现,例如 /bin/ls。创建stray.c:

    #include "/bin/ls"
    

    快速编译:

    gcc -c stray.c
    

    产生以下输出:

    In file included from stray.c:1:0:
    /bin/ls:1:1: error: stray '\177' in program
    /bin/ls:1:1: error: stray '\2' in program
    /bin/ls:1:1: error: stray '\1' in program
    /bin/ls:1:1: error: stray '\1' in program
    /bin/ls:1:8: warning: null character(s) ignored [enabled by default]
    /bin/ls:1:1: error: stray '\2' in program
    /bin/ls:1:18: warning: null character(s) ignored [enabled by default]
    

    'vector' 似乎是一个二进制文件。

    我想到了两个可能的原因:

    1. C++ 'vector' 头文件已损坏。
    2. 您的搜索路径中有另一个“向量”。

    我猜它是第二个。检查并确保在编译器包含路径中没有名为 vector 的二进制文件。

    【讨论】:

    • 非常感谢!你是对的,我很笨,在同一个文件夹中有一个名为 vector.cpp 的测试文件。
    猜你喜欢
    • 2017-03-02
    • 2016-05-16
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 2016-05-02
    相关资源
    最近更新 更多