-1

わかりましたので、C++ に戻ろうとして、基本的なプログラムから始めました。

#include <iostream>

using namespace std;

int main()
{
 cout << "So This Is It.";
 cout << "\n";
 return 0;
}

そして、これは結果です:

-->gcc -g -o HELLO HELLO.cpp
/tmp/ccLZLm5N.o: In function `main':
/root/Programming/Learning/C++/HELLO.cpp:9: undefined reference to `std::cout'
/root/Programming/Learning/C++/HELLO.cpp:9: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/root/Programming/Learning/C++/HELLO.cpp:10: undefined reference to `std::cout'
/root/Programming/Learning/C++/HELLO.cpp:10: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/ccLZLm5N.o: In function `__static_initialization_and_destruction_0':
/usr/include/c++/4.4/iostream:72: undefined reference to `std::ios_base::Init::Init()'
/usr/include/c++/4.4/iostream:72: undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccLZLm5N.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

私のコンパイラ:

-->gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

修正に関する情報を教えてください。また。単純な構文の問題が発生した場合、これに関する正しい情報を見つけるにはどうすればよいですか?

4

1 に答える 1

3

Cコンパイラの代わりにコンパイラを使用しましたC++gccは Cg++用、C++ 用です。GCC のリンカは、C++ 標準ライブラリによって提供される関数を含まない C 標準ライブラリに対してリンクするため、未定義の参照が発生します。

したがって、正しいものを使用してg++ください:

g++ -g -o HELLO HELLO.cpp

追記:

通常gcc、C++ ソースをそのように識別します。ただし、自分でインストールしなかった場合、Ubuntu インストールがインストールされていない可能性が最も高いですg++。スーパーバイザーにインストールを依頼するか、自分でg++インストールしg++てください。

sudu apt-get install g++

そして、すでにインストールしているので、デバッグのためにgdbとを入手してください。valgrind

于 2013-03-13T06:40:29.820 に答える