Fast, Expert Software Consulting and Programming HelpTM
GCC/GCJ for MinGW
Overview
This page is a temporary holding spot for my build of the mingw32 target of a CVS snapshot of certain GCC/GCJ branches. Here, you can download a Win32 (MingW) build of GCC, which can compile C, C++ and Java code into native Windows executables!
Before I type any further, I want to give due credit to people like Adam Megacz, Mumit Khan, and everyone behind GCJ, GCC and MingW. In addition to submitting numerous patches and observations in order to get the latest GCJ built and working on MingW, Ranjit Mathew went above and beyond the call of duty in guiding me through this effort. In the short time that I've been involved in this, I've learned an incredible amount thanks to Ranjit and other helpful souls involved with GCC and GCJ.
Please send feedback! Let me know if there is a better place to put this snapshot, if I have made factual errors or could have done things better, and any other comments you might have.
Quick Links
- GCC/GCJ 3.4
- GCC/GCJ 4.02
- GCC/GCJ 4.2
- GCC/GCJ 4.3
- GCC/GCJ 4.3 (gcj-eclipse-merge-branch)
- Questions, Consulting, Custom Builds
GCC/GCJ 3.4
The Bundle
Here is the bundle:
gcc34-20040607.tar.bz2
(45 819 475 bytes)
(MD5 checksum: 8aea89b55ffae6f6fd675cddc83bcefd)
It includes:
- a build of GCC 3.4 from a CVS snapshot taken at about 16 March 2004 plus some as-yet-unapproved patches.
- binutils-2.14.90-20030612-1, w32api-2.4 and mingw-runtime-3.2 from the MingW download page
- a GCJ build of the Win32 swt.jar (libswt.a which uses swt-win32-3054.dll, shipped with Eclipse 3.0)
- SwingWT 0.83
- sample applications (console, SWT, Swing, AWT miscellaneous)
SwingWT is a Swing and partial AWT implementation which uses SWT under the covers. It allows gcj to compile AWT and Swing applications.
If your Windows archive utility doesn't support this, download MSYS from http://www.mingw.org/. From the MSYS prompt, type:
tar xvfj archive.tar.bz2
in the directory you want to decompress this to.
Integrated SWT and SwingWT
This build allows for integrated SWT and SwingWT (see the links above) as two of the four possible build configurations (see below). With integrated SWT and SwingWT, the appropriate classes have been integrated into the libgcj jar file and library so you don't need to add swt.jar to the classpath or link against libswt.a. The SWT build used is v3054; the SwingWT build used is v0.83.
To integrate SwingWT, I first surgically removed the GNU AWT and Swing sources from the libgcj build (see noawt.diff in the patch list below). I then modified the SwingWT sources, changing packages swingwt.* and swingwtx.* to java.* and javax.*. There are post-libgcj build steps which fold the SWT and SwingWT classes and objects into the libgcj libraries and jar.
Important Note: none of this is intended to minimize the importance of the ongoing GNU libgcj and CLASSPATH work to implement Swing and AWT. The GNU libgcj folks are doing an amazing job and are making amazing progress. I even attempted to start coding up the Win32 AWT peers - you can get my half-baked sources here - but have no idea if I'll ever finish. Someone else is welcome to carry this forward.
Here are some screenshots of Swing and AWT applications running on Win32:
EclipseLauncher (Swing)
http://www.thisiscool.com/gcj/EclipseLauncher.jpg
SaveThatCalendar (AWT)
http://www.thisiscool.com/gcj/SaveThatCalendar.jpg
Nim (AWT)
http://www.thisiscool.com/gcj/nim.jpg
(this hangs when you try to exit it)
Build Configurations
There are four build configurations:
- statically linked using the original libraries
- dynamically linked using the original libraries
- statically linked using integrated SWT + SwingWT
- dynamically linked using integrated SWT + SwingWT
To switch configurations, ensure that gcj is in your system path and type:
gcj-lib orig | origdll | gui | guidll
If you dynamically link executables and redistribute them, please remember that the GNU Public License requires you to make the source available for libgcj.dll in the same manner that you distribute your binaries. See COPYING in thisiscool-gcc/gcc-3.4 for full details.
Depending on whether you use, origdll or guidll, you'll need to rename either of libgcj.dll.origdll or libgcj.dll.guidll to libgcj.dll and put this somewhere in your system path. These are found in thisiscool-gcc/gcc-3.4/i686-pc-mingw32/lib. For GUI builds, you'll also need swt-win32-3054.dll in your system path. (Yes, I know that thisiscool-gcc/gcc-3.4/i686-pc-mingw32/lib is a lousy place to put these.)
GUI Samples
The samples are in the examples directory.
They are all built by the top-level makefile. The GUI samples are:
Sample | Description |
---|---|
EclipseLauncher | A Swing program which demonstrates loading image resources from the executable. |
GUILauncher | A simple SWT program. |
HelloSWT | An SWT program which demonstrates loading image resources from the executable. |
Nim | An AWT program. |
SaveThatCalendar | An AWT program. |
Uncommitted Patches
The build contains the following patches discussed in the java and java-patches mailing lists. Be aware that these have not yet been approved and some of them may never be accepted:
Short Description | Location |
---|---|
Exceptions across boundaries | http://sourceforge.net/mailarchive/forum.php?thread_id=3888273&forum_id=5123 |
BufferedReader optimizations | http://gcc.gnu.org/ml/java-patches/2004-q1/msg00385.html |
mcastGrp | http://gcc.gnu.org/ml/java-patches/2004-q1/msg00668.html |
GNU AWT/Swing Removal | http://www.thisiscool.com/gcj/noawt.diff |
Disable verifier hack | http://www.filewatcher.com/p/gcc-ssa-3.5ssa-0.20030801.47.src.rpm.24318449/gcj-verifier-hack-patch.html |
Getting Started
To get started,
- Download the above zipfile and unzip it somewhere. I chose C:\Program Files and, for illustration purposes, will assume you did too in the remainder of this document.
- Either put C:\Program Files\thisiscool-gcc\gcc-3.4\bin in your global path, or ensure that it is in your path when you do a build.
- For SWT applications, you'll need to move C:\Program Files\thisiscool-gcc\gcc-3.4\i686-pc-mingw32\lib\swt-win32-3054.dll to somewhere your built executable can see it.
- For dynamic builds, rename one of libgcj.dll.origdll or libgcj.dll.guidll (these are both in C:\Program Files\thisiscool-gcc\gcc-3.4\i686-pc-mingw32\lib) to libgcj.dll and put this somewhere where the built executables can see it.
The bundle includes example applications. See the ReadMe files in thisiscool-gcc and thisiscool-gcc/examples for details.
Questions, Consulting, Custom Builds
See this section.
Developer Distribution
Note: these sources includes the above patches. This is source code only, not the gcc compiler itself. To conserve both your bandwidth and mine, only download this if you are sure you need it. If you're not sure whether you need this, you probably don't.
-
gcc34-src-2004607.tar.bz2 (40 110 039 bytes)
(MD5 checksum: eb04815c6f9860d4368106962a667bd3) -
gcc34-scripts-20040607.tar.bz2 (30 031 bytes)
(MD5 checksum: d9a8e30eea2667aa0ad1088a1ed187df)
GCC/GCJ 4.02
The Bundle
Here is the bundle:
gcc40-20051104.tar.bz2
(63900369 bytes)
(MD5 checksum: 2018bff308f05d60ee3222af8541500b)
Build notes:
http://gcc.gnu.org/ml/java/2005-11/msg00023.html
It includes:
- a build of GCC 4.02 from ftp://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-4.0.2/gcc-4.0.2.tar.bz2 plus some as-yet-unapproved patches.
- binutils-2.16.91-20050827-1, w32api-3.5 and mingw-runtime-3.9 from the MingW download page
- a GCJ build of the Win32 swt.jar (libswt.a which uses swt-win32-3138.dll, shipped with Eclipse 3.1)
- SwingWT 0.87
- sample applications (console, SWT, Swing, AWT miscellaneous)
Note: The DLL builds don't allow loading resources from the classpath (the application crashes on startup with an access violation). I haven't looked into this.
Uncommitted Patches
The build contains the following patches discussed in the java and java-patches mailing lists. Be aware that these have not yet been approved and some of them may never be accepted:
Short Description | Location |
---|---|
MinGW gcjh correct headers | http://gcc.gnu.org/ml/java-patches/2005-q3/msg00400.html |
Remove libgcj AWT & Swing Classes | diffs/40/noawt402.diff |
Getting Started
To get started,
- Download the above zipfile and unzip it somewhere. I chose C:\Program Files and, for illustration purposes, will assume you did too in the remainder of this document.
- Either put C:\Program Files\thisiscool-gcc\gcc-4.0\bin in your global path, or ensure that it is in your path when you do a build.
- For SWT applications, you'll need to move C:\Program Files\thisiscool-gcc\gcc-4.0\i686-pc-mingw32\lib\swt-win32-3138.dll to somewhere your built executable can see it.
- For dynamic builds, rename one of libgcj.dll.origdll or libgcj.dll.guidll (these are both in C:\Program Files\thisiscool-gcc\gcc-4.0\i686-pc-mingw32\lib) to libgcj.dll and put this somewhere where the built executables can see it.
The bundle includes example applications. See the ReadMe files in thisiscool-gcc and thisiscool-gcc/examples for details.
Questions, Consulting, Custom Builds
See this section.
Developer Distribution
Note: these sources include the above patches. This is source code only, not the gcc compiler itself. To conserve both your bandwidth and mine, please only download this if you are sure you need it. If you're not sure whether you need this, you probably don't.
-
gcc40-src-20051104.tar.bz2 (73195331 bytes)
(MD5 checksum: 938af7748b6a408a7ff7cb7c3bd26d8e) -
gcc40-scripts-20051104.tar.bz2 (78494 bytes)
(MD5 checksum: 218935b2f3594e3c57343ba60f7075b7)
GCC/GCJ 4.2
The Bundle
Here is the bundle:
gcc42-20061116.tar.bz2
(130056098 bytes)
(MD5 checksum: bd03c031dd779eb5a6abf16781c56d44)
Build notes:
http://gcc.gnu.org/ml/java/2006-11/msg00044.html
It includes:
- a build of GCC 4.2 from the 4.2 SVN branch pulled down around 15 November 2006.
- binutils-2.16.91-20060119-1, w32api-3.5 and mingw-runtime-3.9 from the MingW download page
- a GCJ build of the Win32 swt.jar (libswt.a which uses swt-win32-3218.dll, shipped with Eclipse 3.2)
- sample applications (console, SWT)
Note: DLL (shared) builds are not supported in this release. Also, I haven't integrated SWT and SwingWT as I have in previous releases, though a gcj-built SWT (3218) and SWT samples are included in this bundle.
Uncommitted Patches
The build contains the following patches discussed in the java and java-patches mailing lists. Be aware that these have not yet been approved and some of them may never be accepted:
No uncommitted patches! Woo hoo!
Getting Started
To get started,
- Download the above zipfile and unzip it somewhere. I chose C:\Program Files and, for illustration purposes, will assume you did too in the remainder of this document.
- Either put C:\Program Files\thisiscool-gcc\gcc-4.2\bin in your global path, or ensure that it is in your path when you do a build.
- For SWT applications, you'll need to move one or more of the DLLs in C:\Program Files\thisiscool-gcc\swt\win32\3218 to somewhere your built executable can see it/them.
The bundle includes example applications. See the ReadMe files in thisiscool-gcc and thisiscool-gcc/examples for details.
Questions, Consulting, Custom Builds
See this section.
Developer Distribution
Note: these sources include the above patches. This is source code only, not the gcc compiler itself. To conserve both your bandwidth and mine, please only download this if you are sure you need it. If you're not sure whether you need this, you probably don't.
-
gcc42-src-20061116.tar.bz2 (87836208 bytes)
(MD5 checksum: 5a2b6de70cc7b1fc3982fb0e10432e63) -
gcc42-scripts-20061116.tar.bz2 (3928 bytes)
(MD5 checksum: 2ec6db98b7f0b87392f96e7df646f0e4)
GCC/GCJ 4.3
The Bundle
Here is the bundle:
gcc43-20061204.tar.bz2
(135920173 bytes)
(MD5 checksum: 94133f65c07b6b5bcbf25e927c06c006)
Build notes:
http://gcc.gnu.org/ml/java/2006-12/msg00078.html
It includes:
- a build of GCC 4.3 from gcc SVN trunk pulled down around 4 December 2006.
- binutils-2.16.91-20060119-1, w32api-3.5 and mingw-runtime-3.9 from the MingW download page
- a GCJ build of the Win32 swt.jar (libswt.a which uses swt-win32-3218.dll, shipped with Eclipse 3.2)
- sample applications (console, SWT)
Note: DLL (shared) builds are not supported in this release. Also, I haven't integrated SWT and SwingWT as I have in previous releases, though a gcj-built SWT (3218) and SWT samples are included in this bundle.
Uncommitted Patches
The build contains the following patches discussed in the java and java-patches mailing lists. Be aware that these have not yet been approved and some of them may never be accepted:
No uncommitted patches! Woo hoo!
Getting Started
To get started,
- Download the above zipfile and unzip it somewhere. I chose C:\Program Files and, for illustration purposes, will assume you did too in the remainder of this document.
- Either put C:\Program Files\thisiscool-gcc\gcc-4.3\bin in your global path, or ensure that it is in your path when you do a build.
- For SWT applications, you'll need to move one or more of the DLLs in C:\Program Files\thisiscool-gcc\swt\win32\3218 to somewhere your built executable can see it/them.
The bundle includes example applications. See the ReadMe files in thisiscool-gcc and thisiscool-gcc/examples for details.
Questions, Consulting, Custom Builds
See this section.
Developer Distribution
Note: these sources include the above patches. This is source code only, not the gcc compiler itself. To conserve both your bandwidth and mine, please only download this if you are sure you need it. If you're not sure whether you need this, you probably don't.
-
gcc43-src-20061204.tar.bz2 (91607733 bytes)
(MD5 checksum: 05e079d8508ccbd39cfe50c935119b61) -
gcc43-scripts-20061204.tar.bz2 (3359 bytes)
(MD5 checksum: 2fa112a3afab58473247d408624610c5)
GCC/GCJ 4.3 (gcj-eclipse-merge-branch)
The Bundle
Java 5 support with Eclipse's ecj compiler integrated. Cool!
- generics
- autoboxing/unboxing
- extended for loops
- static imports
- varargs
- enumerations
- annotations
Here is the bundle:
gcc43ecj-20061207.tar.bz2
(125889949 bytes)
(MD5 checksum: 35aae8f877b6a769d534d31fcd2a0e4d)
Build notes:
http://gcc.gnu.org/ml/java/2006-12/msg00127.html
It includes:
- a build of GCC 4.3 from gcj-eclipse-merge-branch SVN trunk pulled down around 5 December 2006.
- binutils-2.16.91-20060119-1, w32api-3.5 and mingw-runtime-3.9 from the MingW download page
- a GCJ build of the Win32 swt.jar (libswt.a which uses swt-win32-3218.dll, shipped with Eclipse 3.2)
- sample applications (console, SWT)
Note: DLL (shared) builds are not supported in this release. Also, I haven't integrated SWT and SwingWT as I have in previous releases, though a gcj-built SWT (3218) and SWT samples are included in this bundle.
Uncommitted Patches
The build contains the following patches discussed in the java and java-patches mailing lists. Be aware that these have not yet been approved and some of them may never be accepted:
Short Description | Location |
---|---|
Configury / ecjx | http://gcc.gnu.org/ml/java-patches/2006-q4/msg00221.html |
Central Parking | http://gcc.gnu.org/ml/java-patches/2006-q4/msg00209.html Note: This patch is incorrect and will not be approved. |
Getting Started
To get started,
- Download the above zipfile and unzip it somewhere. I chose C:\Program Files and, for illustration purposes, will assume you did too in the remainder of this document.
- Either put C:\Program Files\thisiscool-gcc\gcc-ecj\bin in your global path, or ensure that it is in your path when you do a build.
- For SWT applications, you'll need to move one or more of the DLLs in C:\Program Files\thisiscool-gcc\swt\win32\3218 to somewhere your built executable can see it/them.
The bundle includes example applications. See the ReadMe files in thisiscool-gcc and thisiscool-gcc/examples for details.
Questions, Consulting, Custom Builds
See this section.
Developer Distribution
Note: these sources include the above patches. This is source code only, not the gcc compiler itself. To conserve both your bandwidth and mine, please only download this if you are sure you need it. If you're not sure whether you need this, you probably don't.
-
gcc43ecj-src-20061207.tar.bz2 (103510554 bytes)
(MD5 checksum: 00b7168c5d6033f6cdaeed0ea877b649) -
gcc43ecj-scripts-20061207.tar.bz2 (3604 bytes)
(MD5 checksum: 281421c1fd55624fa3f099b3935504db)
Questions, Consulting, Custom Builds
Due to my busy schedule, it is unlikely that I can answer direct emails pertaining to the usage of MinGW gcc and gcj. I am a software developer and consultant, though, and would be happy to help you if you purchase hours of my consulting time. Click here to start a fun, user-friendly wizard where you can do this. There are also flat-rate services you can purchase
I am committed to maintaining and updating this build and providing it for free download for as long as my schedule permits. I promise to never charge money for the download of this build. I am also interested in hearing about bugs in this build. These should first be reported to the gcj mailing list, as discussed shortly.
I can also do custom builds and add functionality as part of my consulting services. I've done this for a client who has released a commercial product using MinGW gcj, with great results. Contact me at the email address above for further details.
You can also try to ask gcj-related questions on the gcj mailing list: http://gcc.gnu.org/ml/java. See this page for signup information. The people there are very friendly and helpful. Keep in mind, though, that they probably won't be able to answer questions that are too Windows-specific or specific to my build.
Licenses
- GCC/GCJ are licensed under the GNU Public License with a special exception for libgcj.
- The Standard Widget Toolkit is licensed under the Common Public License.
- SwingWT is dual-licensed under the terms of the Common Public License and the GNU Lesser General Public Licence (LGPL). ("Dual-licensing" means that you are allowed to pick the license which best suits your needs.)
If You Enjoy This...
...would you consider visiting one or more of the following links?: