【问题标题】:Gcc compilation error when compiling a *.cc file编译 *.cc 文件时出现 Gcc 编译错误
【发布时间】:2011-06-07 08:21:16
【问题描述】:

我在 Ubuntu 环境中使用 gcc 编译器编写了一个简单的 C 程序。代码很简单。但是,当我尝试编译时,它给出了一个我无法理解的错误。这是代码和错误

# include <stdio.h>
int main() {
  enum mar_status {
    single,married,divorced
  };
  enum mar_status person1,person2;
  person1 = single;
  printf("%d\n",person1);  //line B
}

编译时出现以下错误

gcc enum2.cc
/tmp/cc6stgaW.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status

如果我删除 B 行的 printf 语句,一切都会正常。关于编译为什么失败的任何想法?

【问题讨论】:

    标签: c gcc compiler-errors


    【解决方案1】:

    您正在使用 gcc 编译 C++ 代码? (.cc 分机)

    要么将文件重命名为enum2.c,要么使用g++进行编译。

    【讨论】:

      【解决方案2】:

      对内部运行时库函数(例如 __gxx_personality_v0)的未定义引用也是使用 gcc 而不是 g++ 链接 C++ 目标文件的症状。

      将文件扩展名从 .cc 或 .cpp 更改为 .c 将解决此问题。

      【讨论】:

        【解决方案3】:

        你混淆了编译器 - 当你说:

         gcc enum2.cc
        

        它认为您正在编译 C++ 代码,但您正在使用 gcc 执行此操作,它没有链接正确的 C++ 库。使用:

        gcc enum2.c
        

        【讨论】:

          【解决方案4】:

          它运行良好。检查:http://ideone.com/bhjlf

          我猜你的编译命令是错误的。

          【讨论】:

            猜你喜欢
            • 2018-04-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-28
            • 1970-01-01
            • 1970-01-01
            • 2010-12-21
            相关资源
            最近更新 更多