首页 > 后端开发 > C++ > 为什么在 macOS 上编译简单 C 代码时出现'未定义符号”错误?

为什么在 macOS 上编译简单 C 代码时出现'未定义符号”错误?

Mary-Kate Olsen
发布: 2024-12-09 01:43:14
原创
566 人浏览过

Why Am I Getting

编译简单 C 代码时出错

问题:
我在 macOS 上编译基本 C 程序时收到错误狮子。

代码:

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    for (int i = 0; i < 10; i++)
    {
        cout << "hi";
        cout << endl;
    }

    return 0;
}
登录后复制

编译命令:

cc main.cpp
登录后复制

错误:

Undefined symbols for architecture x86_64:
  "std::cout", referenced from:
      _main in ccBdbc76.o
  "std::basic_ostream<char, std::char_traits<char> > &amp; std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> > &amp;, char const*)", referenced from:
      _main in ccBdbc76.o
  "std::basic_ostream<char, std::char_traits<char> > &amp; std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> > &amp;)", referenced from:
      _main in ccBdbc76.o
  "std::basic_ostream<char, std::char_traits<char> >::operator<< (std::basic_ostream<char, std::char_traits<char> > &amp; (*)(std::basic_ostream<char, std::char_traits<char> > &amp;))", referenced from:
      _main in ccBdbc76.o
  "std::ios_base::Init::Init()", referenced from:
      __static_initialization_and_destruction_0(int, int)in ccBdbc76.o
  "std::ios_base::Init::~Init()", referenced from:
      ___tcf_0 in ccBdbc76.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
登录后复制

答案:

此类错误通常当使用 C 前端编译 C 代码时会发生。虽然 C 编译器将文件理解并编译为 C ,但由于缺少对 C 库的引用,它在链接过程中失败。要解决此问题,请确保您使用的是 C 编译器。编译代码时将 cc 替换为 g 或 clang:

g++ main.cpp
clang++ main.cpp
登录后复制

使用正确的 C 编译器将代码与必要的库链接起来,并解决未定义的符号错误。

以上是为什么在 macOS 上编译简单 C 代码时出现'未定义符号”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板