【问题标题】:undefined reference to `__gxx_personality_v0' with gcc [duplicate]使用 gcc 未定义对“__gxx_personality_v0”的引用 [重复]
【发布时间】:2012-06-03 19:37:52
【问题描述】:

可能重复:
What is __gxx_personality_v0 for?

我在编译 C++ 代码的上下文中看到了这个问题。但是我要编译一个 pure C 代码并不断收到这个错误。我被禁止使用“-lstdc++”作为解决这个 gcc 问题的方法。如何更改我的代码以使其正常工作,为什么会弹出此错误?

我的简化代码:

//this is main.cpp
#include <stdio.h>
int main()
{
    char ch[3];
    ch[0] = getc(stdin);
    ch[1] = getc(stdin);
    ch[2] = '\0';
    printf("%s\n", ch);
    return 0;
}

我的编译命令是:

gcc main.cpp

【问题讨论】:

  • 请粘贴您的编译器/链接器命令行?
  • @ugoren 请认真阅读。它不是重复的。如上所述,我关注的是 C 代码而不是 C++。此外,我问如何重写代码以消除错误,而不是添加哪些编译选项!
  • @anonymous_infoholic:那么请回答 maverik 的问题。您仍然将其命名为 .cpp,这可能会在后端丢弃一些工具。
  • @maverik:发问者似乎无法回答您的评论。给他背景资料。
  • @STATUS_ACCESS_DENIED 哦,因为我经常在语言之间切换,所以我做了一个台词。我更正了,确实解决了问题,非常感谢您的评论和解释!我以为特立独行只是在发表刻薄的言论..

标签: c gcc undefined-reference


【解决方案1】:

使用g++ - 因为您的文件后缀为.cpp 或将文件重命名为.c 并保持命令行不变。在 Debian 6.0.5 上使用 gcc 4.4.5 测试。

【讨论】:

    【解决方案2】:

    man gcc 说:

    C++ 源文件通常使用后缀之一 .C、.cc、.cpp、.CPP、.c++、.cp、 或.cxx; C++ 头文件通常使用 .hh、.hpp、.H 或(对于共享模板代码).tcc; 和预处理的 C++ 文件使用后缀 .ii。 GCC 识别具有这些名称的文件并 即使您以与 for 相同的方式调用编译器,也会将它们编译为 C++ 程序 编译 C 程序(通常使用名称 gcc)。

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 2011-08-28
      • 2021-09-22
      • 1970-01-01
      • 2018-05-07
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多