Difference between revisions of "Cross-compiling Windows version from Linux"
m (Reverted edits by 205.234.69.161 (Talk); changed back to last version by Lucifer) |
|||
Line 10: | Line 10: | ||
export CC=i586-mingw32msvc-gcc | export CC=i586-mingw32msvc-gcc | ||
− | export CXX=i586-mingw32msvc-c | + | export CXX=i586-mingw32msvc-c |
export LD=i586-mingw32msvc-ld | export LD=i586-mingw32msvc-ld | ||
export AR=i586-mingw32msvc-ar | export AR=i586-mingw32msvc-ar |
Revision as of 06:57, 8 June 2007
Just collecting cross-compilation notes.
Setting up the cross compiler under linux
Check your distribution for mingw packages. If it has it, install them. If not, try this:
http://www.libsdl.org/extras/win32/cross/
Export some environment variable:
export CC=i586-mingw32msvc-gcc export CXX=i586-mingw32msvc-c export LD=i586-mingw32msvc-ld export AR=i586-mingw32msvc-ar export AS=i586-mingw32msvc-as export NM=i586-mingw32msvc-nm export STRIP=i586-mingw32msvc-strip export RANLIB=i586-mingw32msvc-ranlib export DLLTOOL=i586-mingw32msvc-dlltool export OBJDUMP=i586-mingw32msvc-objdump export RESCOMP=i586-mingw32msvc-windres
You might want those in a script.
Libraries
You'll need to use the same configure command to configure and install the libraries. Get libSDL and libxml2 and do this:
./configure --host=i586-mingw32msvc --prefix=/usr/i586-mingw32msvc
Prefix is the location of your cross-compiler, it should have "bin", "lib", and "include" in it.
To get libxml2 to cross-compile, use this as your configure command:
./configure --host=i586-mingw32msvc --prefix=/usr/i586-mingw32msvc --with-python=no
Armagetron Advanced
You need to set some influential environment variables to make it configure.
XML2_CONFIG=/path/to/cross-compiled/xml2-config SDL_CONFIG=/path/to/cross-compiled/sdl-config
Example:
XML2_CONFIG=/usr/i586-mingw32msvc/bin/xml2-config SDL_CONFIG=/usr/i586-mingw32msvc/bin/sdl-config ../../armagetronadnew/configure --host=i586-mingw32msvc --prefix=/usr/i586-mingw32msvc --disable-sound
Currently it's failing for me with this line:
checking for glVertex3f in -lopengl32... no OpenGL not found. Maybe it needs X11 to compile? Checking that...
Dedicated Server
Same as above, only try this configure line instead:
XML2_CONFIG=/usr/i586-mingw32msvc/bin/xml2-config SDL_CONFIG=/usr/i586-mingw32msvc/bin/sdl-config CFLAGS="-I/usr/i586-mingw32msvc/include -DNO_SOCKLEN_T" CXXFLAGS="-I/usr/i586-mingw32msvc/include" ../../armagetronadnew/configure --host=i586-mingw32msvc --prefix=/home/dave/Projects/armagetronad/aabuild/win32install --disable-sound --disable-glout --disable-binreloc
This will configure and build the dedicated server with a recent trunk checkout. The dedicated server that's built this way has a few issues to work out, but it'll run in Win98 and Wine, the difference being that in Wine you can't connect a client to it.