Cần giải thích thắc mắc về gcc compiler và IDE của C++

Chào mọi người, hiện mình mới nhập môn C++. Hiện tại mình đang dùng IDE Dev C++ để lập trình, tuy thế mình cũng có cài luôn cả gcc compiler của MinGW để compile trên command line.

Mình có thử code sau:

#include <iostream>
 using namespace std;

int main(){
int n, reverse = 0, rem;
cout << "Enter a number";
cin >> n;
while(n != 0){
	rem = n%10;
	reverse = reverse*10 + rem;
	n /= 10;
}
cout <<"Reverse Number: "<<reverse<<endl;
return 0;
}

Mình Compile và Build trên Dev C++ thì code chạy và ok, nhưng khi mình dùng lệnh gcc filename.cpp thì nó không đưa ra file .exe mà ra lỗi sau:

     c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0x28): undefined reference to `std::cout'
     c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0x2d): 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*)'
>c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0x38): undefined reference to `std::cin'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\cBGmYGC.o:Basic.cpp:(.text+0x3d): undefined reference to `std::istream::operator>>(int&)'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0xb7): undefined reference to `std::cout'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0xbc): 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*)'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0xcb): undefined reference to `std::ostream::operator<<(int)'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0xd5): 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> >&)'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0xdc): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0xfc): undefined reference to `std::ios_base::Init::~Init()'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:C:\Users\CHUQUA~1\AppData\Local\Temp\ccBGmYGC.o:Basic.cpp:(.text+0x11d): undefined reference to `std::ios_base::Init::Init()'
collect2.exe: error: ld returned 1 exit status

Có bạn nào biết nguyên nhân xuất phát từ đâu giải thích cho mình được không, nếu mình có sai ở đâu mong mọi người chỉ giáo :smile:

Bạn nên xài g++ để biên dịch C++. Cú pháp tựa như gcc.
Còn nếu xài gcc thì thêm cái này vào -lstdc++ vì mặc định gcc chỉ link thư viện chuẩn của C thôi.

5 Likes

Cảm ơn bạn nhé mình sẽ tìm hiểu thêm, sorry nãy mình đang edit lại bài trong lúc bạn edit rồi, lúc bấm save mới biết bạn edit lại rồi, cảm ơn nhé ^^

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?