Version 52 (modified by 14 years ago) ( diff ) | ,
---|
Compiling using MingGW-w64 for both 32-bit and 64-bit
1. Installing Minimalist GNU for Windows-w64 (MinGW-w64)
The objective will be to try to use the MingGW-w64 toolchain instead of the standard MingW since it has support for both 32-bit and 64-bit compiling. Note: We are not successful yet, but just writing down our steps as we go along.
Details of the prefixes of files can be found at What to download
MingW-w64 site is http://mingw-w64.sourceforge.net
- If you are on 64-bit Windows download one of the binary packages from http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Automated%20Builds/ with name
starting with mingw-w64-1.0-bin_i686-mingw_
- If you are on 32-bit Windows download one of the binary packages from http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Automated%20Builds/ with name starting with
mingw-w32-1.0-bin_i686-mingw_ (for my purposes I used mingw-w32-1.0-bin_i686-mingw_20110408.zip)
- Extract your respective zip into a folder called C:\mingw_w64 or c:\mingw_w32
- Add c:\mingw_w64\bin (or c:\mingw_w32\bin) to your windows environment path variable in System Control Panel Advanced Settings -- PATH
2. Installing Msys
MSys is 32-bit but you can use it with your 32-bit or 64-bit mingw-w64. Instructions are here mingw-w64 with MSYS and repeated here for completeness
sh /postinstall/pi.sh
When prompted type in
C:/mingw_w64/mingw
or C:/mingw_w32/mingw
depending on which tool chain you chose
Once done, type logout and the console should exit.
3a. Installing Autoconf, Automake and Libtool
Relaunch C:\mysy\msys.bat
Verify which versions of these you have with
autoconf --version etc.
If they are not newer (or you get not found) than below then download and install. Download the source code from the GNU site and save to c:\projects
- http://ftp.gnu.org/gnu/autoconf/autoconf-2.65.tar.gz
- http://ftp.gnu.org/gnu/automake/automake-1.11.tar.gz
- http://ftp.gnu.org/gnu/libtool/libtool-2.4.tar.xz
cd /c/projects tar -xvf autoconf-2.65.tar.gz cd autoconf-2.65 ./configure --build=i686-w64-mingw32 --host=i686-w64-mingw32 (if you are building for 64-bit then use --build=x86_64-w64-mingw32) make && make install autoconf --version
repeat same exercise for automake
For libtool
cd /c/projects tar -xvf libtool-2.4.10.tar.gz cd libtool-2.4 ./configure --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --disable-shared #if you are building for 64-bit then use --host=x86_64-w64-mingw32 for the build,host,target make clean && make && make install libtool --version
3.b create project folders
cd /c/projects mkdir pg mkdir postgresql mkdir geos mkdir proj ls
4. Compiling GEOS
Download latest GEOS source from http://trac.osgeo.org/geos/ either the http://download.osgeo.org/geos/geos-3.3.0.tar.bz2 or http://download.osgeo.org/geos/geos-svn.tar.bz2 and copy to c:\projects\geos. You can also use the trunk svn version https://svn.osgeo.org/geos/trunk. If you are using svn version, make sure to run:
sh autogen.sh
(THIS WE DON'T THINK IS NECESSARY ANYMORE and we didn't do it)
I had to comment out the lines as seen below, lines 159 and 166 in your mingw*\include\c++\4.4.6\cwchar
//using ::swprintf; //using ::vswprintf;
We don't think this is necessary either If you get errors about g++ and libstdc++ moved try this If you are runnning gcc 4.4.0+ and you get complaints about link g++ you probably need to do this too. Changing file: mingw*\i686-w64-mingw32\lib32\libstdc++.la
library_names='libstdc++.dll.a'
to
#library_names='libstdc++.dll.a' library_names='libstdc++.a'
#this currently fails at linker phase with a whole bunch of
simplify/.libs/libsimplify.a(TopologyPreservingSimplifier.o):TopologyPreservingS implifier.cpp:(.rdata+0x1f0): undefined reference to `geos::geom::util::GeometryTransformer::transformGeometryCollection(geos::geom::GeometryCollection const*, geos::geom::Geometry const*)' and bunch of other classes in util::GeometryTransformer.. the .la file gets created so seems to be at linker phase.
cd /c/projects/geos bzip2 -d -c geos-svn.tar.bz2 | tar xvf - ./configure --prefix=/c/projects/geos/rel-3.3.0 --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 make make install
To strip all the debug info weight from the libgeos DLL files, run
# strip /c/projects/bin/geos/rel-3.3.0/*.dll
5. Compiling Proj
Download Proj4 from the web site, and the datum shifts grid file.
- http://download.osgeo.org/proj/proj-4.7.0.tar.gz
- http://download.osgeo.org/proj/proj-datumgrid-1.5.zip
THIS MAY NOT BE NECESSARY WITH THE MUTEX PATCH. STill fails anyway To compile you need to download and install pthreads as described here http://sourceforge.net/apps/trac/mingw-w64/wiki/Compile%20pthreads (pre-compiled binaries for both the 32-bit and 64-bit are located at http://sourceforge.net/projects/mingw-w64/files/External%20binary%20packages%20%28Win64%20hosted%29/pthreads/ in the .zip file)
and copy to c:\projects\proj The datum grid file must be unzipped into the "nad" subdirectory of the Proj4 source tree.
cd /c/projects/proj tar xvfz proj-4.6.1.tar.gz cd proj-4.6.1 cd nad unzip ../../proj-datumgrid-1.5.zip cd ..
Apply mutex patch in http://trac.osgeo.org/proj/ticket/72
./configure --prefix=/c/projects/proj/rel-4.7.0 --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --enable-shared --disable-static make make install
Seems to give an error on make install (when trying to copy over the nad folder), but generates files in rel-4.7.0. Have to copy the nad folder manually. The .dll file is strangely called libproj-0.dll. of libproj.dll. Oh well.
6. Compiling and Installing C-Unit
Download from http://sourceforge.net/projects/cunit/ into c:\projects
cd /c/projects tar -xvf CUnit-2.1-2-src.tar.bz2 cd CUnit-2.1.2 ./configure --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 make && make install
7. Compiling LibXML2
mkdir /c/projects/libxml
cd /c/projects/libxml
ftp://xmlsoft.org/libxml2/libxml2-2.7.8.tar.gz
tar xvfz libxml2-2.7.8.tar.gz cd libxml2-2.7.8 ./configure --prefix=/c/projects/libxml/libxml2-2.7.8release --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --disable-shared CCFLAGS=LDFLAGS="-Wl,-static" CFLAGS=-O2 make make install