ホームページ > バックエンド開発 > 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート