دوستان مشکل دیگری در کامپایل برنامه های سی و سی پلاس هست:
--------------
یک واقعه عجیب
برنامه ساده زیر رو در نظر بگیرید:
#include <iostream>
using namespace std;
int main ()
{
cout << " Hello! This is a console app." << endl;
return 0;
}
خوب حتما میفرمایید که بسیار ساده است و بسادگی هم باید کامپایل و اجرا بشه!
حالا نتیجه کامپایل رو ببینید:
$ gcc hello.cpp -o hello
/tmp/cczclmyY.o: In function `__static_initialization_and_destruction_0(int, int)':
hello.cpp:(.text+0x23): undefined reference to `std::ios_base::Init::Init()'
/tmp/cczclmyY.o: In function `__tcf_0':
hello.cpp:(.text+0x6c): undefined reference to `std::ios_base::Init::~Init()'
/tmp/cczclmyY.o: In function `main':
hello.cpp:(.text+0x8e): undefined reference to `std::cout'
hello.cpp:(.text+0x93): 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*)'
hello.cpp:(.text+0x9b): 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> >&)'
hello.cpp:(.text+0xa3): 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> >&))'
hello.cpp:(.text+0xb2): undefined reference to `std::cout'
hello.cpp:(.text+0xb7): 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*)'
hello.cpp:(.text+0xbf): 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> >&)'
hello.cpp:(.text+0xc7): 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> >&))'
hello.cpp:(.text+0xd6): undefined reference to `std::cout'
hello.cpp:(.text+0xdb): 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*)'
hello.cpp:(.text+0xe3): 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> >&)'
hello.cpp:(.text+0xeb): 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/cczclmyY.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
البته وقتی هم که از دستور cc hello.cpp -o hello هم استفاده کردم نتیجه مشابهی گرفتم، ولی از همه عجیبتر اینه که وقتی اون رو با دستور زیر کامپایل کردم:
$ g++ hello.cpp -o hello
$ ./hello
Hello! This is a console app.
به خوبی کامپایل و اجرا شد.
کسی توجیحی برای این مورد داره!؟