web-dev-qa-db-ja.com

非常に単純なプログラムがC ++で動作しない?

これが機能しない理由がわかりません...

私はLinuxで働いています

g ++は何もしません

gccは以下を出力します。

/tmp/ccyg7NDd.o: In function `main':
test.cc:(.text+0x14): undefined reference to `std::cout'
test.cc:(.text+0x19): 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*)'
test.cc:(.text+0x21): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
test.cc:(.text+0x29): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'
/tmp/ccyg7NDd.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cc:(.text+0x51): undefined reference to `std::ios_base::Init::Init()'
test.cc:(.text+0x56): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccyg7NDd.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

コード:

#include<iostream>
#include<stdio.h>

int main(){

std::cout<<"test "<<std::endl;
return 0;

};
16
spatara
gcc main.cpp -lstdc++

または

g++ main.cpp
77
kev

gccはCコンパイラです。g++を使用する必要があります(または、他の人が指摘したように、gccをオプション-lstdc++とともに使用します)。 g++を使用した後に何も表示されない場合は、コンパイルしたバイナリをビルド後に実行する必要があります(つまり、g++が完了したとき)。

main.cpp:

#include<iostream>

int main(){

std::cout<<"test "<<std::endl;
return 0;

};

ビルド:

g++ main.cpp -o main

実行:

./main

出力:

test 
18
hmjd

これはC++コードなので、gccではなくg ++を使用する必要があります。また#include<stdio.h>は必要ありません

4
sank

C++コンパイラコマンドではなく、Cコンパイラコマンドと誤ってリンクしていると思います。これを試して:

g ++ test.cc -o test