问题
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