I have just install gcc and g++ on mingw. I wrote a very simple "hello world" program to test if the g++ compiler worked. Code:
#include <iostream>
using namespace std;
int main()
{
cout << "hello world" << endl;
return 0;
}
Compile:
g++ Test.cpp
And then some errors appear:
D:/MinGW[Finished in 0.6s with exit code 1]/bin/../lib/gcc/mingw32/3.4.5/../../../../mingw32/lib/crt2.o: In function `_mingw_setargv':
D:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../mingw32/lib/libmingwex.a(glob.o): In function `glob_match':
i:\p\giaw\src\pkg\mingwrt-4.0-1-mingw32-src\bld/../mingwrt-4.0.0-1-mingw32-src/src/libcrt/misc/glob.c:733: undefined reference to `__chkstk_ms'
D:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../mingw32/lib/libmingwex.a(glob.o): In function `glob_strdup':
i:\p\giaw\src\pkg\mingwrt-4.0-1-mingw32-src\bld/../mingwrt-4.0.0-1-mingw32-src/src/libcrt/misc/glob.c:85: undefined reference to `__chkstk_ms'
D:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../mingw32/lib/libmingwex.a(glob.o): In function `glob_match':
i:\p\giaw\src\pkg\mingwrt-4.0-1-mingw32-src\bld/../mingwrt-4.0.0-1-mingw32-src/src/libcrt/misc/glob.c:841: undefined reference to `__chkstk_ms'
D:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../mingw32/lib/libmingwex.a(glob.o): In function `glob_strdup':
i:\p\giaw\src\pkg\mingwrt-4.0-1-mingw32-src\bld/../mingwrt-4.0.0-1-mingw32-src/src/libcrt/misc/glob.c:85: undefined reference to `__chkstk_ms'
D:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../mingw32/lib/libmingwex.a(glob.o):i:\p\giaw\src\pkg\mingwrt-4.0-1-mingw32-src\bld/../mingwrt-4.0.0-1-mingw32-src/src/libcrt/misc/glob.c:85: more undefined references to `__chkstk_ms' follow
collect2: ld returned 1 exit status
I had a similar problem, which arose because I foolishly installed a newer version into an old installation. The fix was obvious, I backed up my old installation, then deleted it and done a fresh install. Everything compiled perfectly. Old habits die hard I guess. ;)
This might be a "modern" answer to the original question: You may miss the stdc++ and gcc library in MinGW, have to link them by yourself manually.
Here's an authoritative answer, from a MinGW project administrator.
Your problem arises because you continue to use an obsolete, (no longer maintained; no longer supported), version of GCC. Current versions of
mingwrt
are compiled using GCC-4.x, (I used GCC-4.8.2 formingwrt-3.21
and its descendants), and this introduces the dependencies on__chkstk_ms
, (which is provided bylibgcc
-- a GCC-4.x specific library, which is incompatible with GCC-3.x).FWIW, I can reproduce your issue if I install a GCC-4.8.2 built
mingwrt-3.21.1
into a GCC-3.4.5 installation. By the same token, I can also successfully usemingwrt-3.21.1
with GCC-3.4.5, if I build it with that same version of GCC.Thus, for an authoritative answer: if you must continue to use an obsolete GCC version, you need to be prepared to rebuild all associated libraries, using that same obsolete compiler.
The orig problem seems solved regarding linking against old libs, but I have opposite case. I need to work with older GCC 3.4 version, so I installed gcc-v3-core package. Then orig errors immediately appear when linking a trivial source. I found out that MinGW GCC 3.4 cannot work with mingwrt > 3.20 and the problem is that gcc-v3-core contains incorrect mingwrt spec, allowing newest vesions.
The solution is simple:
!Update! Actually with mingwrt-3.20 linker reports same errors for C++ code:
BAM!
Solution 2:
the last one that seems to work with gcc-v3-g++.