Very simple program not working in c++?

冷暖自知 提交于 2019-12-29 03:28:30

问题


I can't figure out why this isn't working...

I am working in Linux

g++ doesn't do anything

gcc prints the following:

/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

Code:

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

int main(){

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

};

回答1:


gcc main.cpp -lstdc++

or

g++ main.cpp



回答2:


gcc is the C compiler, you need to use g++ (or use gcc with option -lstdc++ as pointed out by others). If by nothing is printed after you use g++ is what you mean, you have to execute the compiled binary after you build it (i.e. when g++ completes).

main.cpp:

#include<iostream>

int main(){

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

};

Build:

g++ main.cpp -o main

Execute:

./main

Output:

test 



回答3:


This is a C++ code and so you should use g++ and not gcc. Also #include<stdio.h> is not needed




回答4:


I think you are mistakenly linking with the C compiler command instead of the C++ compiler command. Try this:

g++ test.cc -o test




回答5:


I think the underlying issue for this is that the binary name "test" is actually already apart of the linux system. Typing in "man test" displays a manual for the test binary. I had the EXACT same issue. It was resolved simply by compiling the binary to something other than "test".




回答6:


Compilers delimit by whitespace. Put a space between all keywords and <<. So cout<< should be cout <<. Same with <

来源:https://stackoverflow.com/questions/9447428/very-simple-program-not-working-in-c

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!