Solved c++ simple string sample main.cpp gets many errors.

Code:
$ cat main.cpp
#include <iostream>
#include <string>

using namespace std;

int main (int argc, char ** argv)
{
    string name;
    cout<<"Enter your name "<<endl;
    cin>>name;
    cout<<"You Name is "<<name<<endl;
return 0;
}
errors, with both cc and gcc9
Code:
$ gcc9 main.cpp
/usr/local/bin/ld: /tmp//ccJCQLAp.o: in function `main':
main.cpp:(.text+0x29): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'
/usr/local/bin/ld: main.cpp:(.text+0x33): undefined reference to `std::cout'
/usr/local/bin/ld: main.cpp:(.text+0x38): 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*)'
/usr/local/bin/ld: main.cpp:(.text+0x3d): 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> >&)'
/usr/local/bin/ld: main.cpp:(.text+0x45): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/usr/local/bin/ld: main.cpp:(.text+0x51): undefined reference to `std::cin'
/usr/local/bin/ld: main.cpp:(.text+0x56): undefined reference to `std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
/usr/local/bin/ld: main.cpp:(.text+0x60): undefined reference to `std::cout'
/usr/local/bin/ld: main.cpp:(.text+0x65): 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*)'
/usr/local/bin/ld: main.cpp:(.text+0x77): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/local/bin/ld: main.cpp:(.text+0x7c): 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> >&)'
/usr/local/bin/ld: main.cpp:(.text+0x84): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/usr/local/bin/ld: main.cpp:(.text+0x95): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/local/bin/ld: main.cpp:(.text+0xa8): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/local/bin/ld: /tmp//ccJCQLAp.o: in function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0xe1): undefined reference to `std::ios_base::Init::Init()'
/usr/local/bin/ld: main.cpp:(.text+0xf0): undefined reference to `std::ios_base::Init::~Init()'
/usr/local/bin/ld: /tmp//ccJCQLAp.o:(.eh_frame+0x4b): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status
userx@FreeBSD.net:~
Code:
$ cc main.cpp
/usr/bin/ld: error: undefined symbol: std::__1::cout
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(main)

/usr/bin/ld: error: undefined symbol: std::__1::cin
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(main)

/usr/bin/ld: error: undefined symbol: std::__1::cout
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(main)

/usr/bin/ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(main)

/usr/bin/ld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(main)

/usr/bin/ld: error: undefined symbol: std::__1::ios_base::getloc() const
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::ctype<char>::id
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::locale::use_facet(std::__1::locale::id&) const
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::locale::~locale()
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::locale::~locale()
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::basic_istream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_istream<char, std::__1::char_traits<char> >&, bool)
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::operator>><char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::ios_base::getloc() const
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::operator>><char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::ctype<char>::id
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::operator>><char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::locale::use_facet(std::__1::locale::id&) const
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::operator>><char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::locale::~locale()
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::operator>><char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::locale::~locale()
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::operator>><char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&))

/usr/bin/ld: error: undefined symbol: __cxa_begin_catch
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::operator>><char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&))

/usr/bin/ld: error: undefined symbol: std::__1::ios_base::__set_badbit_and_consider_rethrow()
>>> referenced by main.cpp
>>>               /tmp/main-c21e39.o:(std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::operator>><char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&))

/usr/bin/ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
userx@FreeBSD.net:~
I ripped it down to just a cout command and get the same errors. why?
 
Try using g++9 or c++. You are compiling c++ source, and those commands will automatically link to the proper c++ standard runtime libraries.
 

-lstdc++
Code:
userx@FreeBSD.net:~
$ cc main.cpp -lstdc++


userx@FreeBSD.net:~
$ ./a.out
Enter your name 
bob
You Name is bob
userx@FreeBSD.net:~

$ gcc9 main.cpp -lstdc++
userx@FreeBSD.net:~
$ ./a.out
Enter your name 
bob
You Name is bob
 
Back
Top