Some MinGW-related updates

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12030 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Mattia Barbon
2001-10-16 18:59:58 +00:00
parent 43edcf13ca
commit 1d341cf4f7

View File

@@ -158,8 +158,10 @@ VII) Unix->Windows cross-compiling using configure
First you'll need a cross-compiler; linux glibc binaries of mingw32 and First you'll need a cross-compiler; linux glibc binaries of mingw32 and
cygwin32 (both based on egcs) can be found at cygwin32 (both based on egcs) can be found at
ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Otherwise you can ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Alternative binaries,
compile one yourself. Check the relevant FAQs. based on the latest MinGW release can be found at
http://members.telering.at/jessich/mingw/mingwcross/mingw_cross.html
Otherwise you can compile one yourself.
[ A Note about cygwin32 and mingw32: the main difference is that cygwin32 [ A Note about cygwin32 and mingw32: the main difference is that cygwin32
binaries are always linked against cygwin.dll. This dll encapsulates most binaries are always linked against cygwin.dll. This dll encapsulates most
@@ -179,8 +181,7 @@ To cross compile the windows library, do
-> cd win32 -> cd win32
(or whatever you called it) (or whatever you called it)
Now run configure. There are two ways to do this Now run configure. There are two ways to do this
-> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw \ -> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw
--enable-dnd=no --without-odbc
where --build= should read whatever platform you're building on. Configure where --build= should read whatever platform you're building on. Configure
will notice that build and host platforms differ, and automatically prepend will notice that build and host platforms differ, and automatically prepend
i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!). i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!).
@@ -188,29 +189,22 @@ The other way to run configure is by specifying the names of the binaries
yourself: yourself:
-> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \ -> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \
DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \ DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \
../configure --host=i586-mingw32 --with-mingw --enable-dnd=no ../configure --host=i586-mingw32 --with-mingw
(all assuming you're using mingw32) (all assuming you're using mingw32)
Drag'n'drop is disabled because mingw32 lacks (AFAIK) OLE headers. By default this will compile a DLL, if you want a static library,
specify --disable-shared.
[ Update: some new mingw32 versions now have a new set of windows header
files, which apparently can handle ole. Untested at the moment ]
ODBC files don't compile as of 13.10.99 - may be this will be fixed by the
moment you're reading these lines.
Configure will conclude that shared libraries are out of the question and
opt for a static one. I haven't looked into DLL creation yet.
Type Type
-> make -> make
and wait, wait, wait. Don't leave the room, because the minute you do there and wait, wait, wait. Don't leave the room, because the minute you do there
will be a compile error :-) will be a compile error :-)
NB: you risk to get quite a few warnings about "ANSI C++ forbids implicit NB: if you are using a very old compiler you risk to get quite a few warnings
conversion from 'void *'" in all places where va_arg macro is used. This about "ANSI C++ forbids implicit conversion from 'void *'" in all places
is due to a bug in (some versions of) mingw32 headers which may be where va_arg macro is used. This is due to a bug in (some versions of)
corrected by editing the file mingw32 headers which may be corrected by upgrading your compier,
otherwise you might edit the file
${install_prefix}/lib/gcc-lib/i586-mingw32/egcs-2.91.57/include/stdarg.h ${install_prefix}/lib/gcc-lib/i586-mingw32/egcs-2.91.57/include/stdarg.h
@@ -231,8 +225,9 @@ typedef void *__gnuc_va_list;
and adding "|| defined(_WIN32)" to the list of platforms on which and adding "|| defined(_WIN32)" to the list of platforms on which
__gnuc_va_list is char *. __gnuc_va_list is char *.
If this is successful, you end up with a libwx_msw.a in win32/lib. Now try If this is successful, you end up with a wx23_2.dll/libwx23_2.a in win32/lib
building the minimal sample: ( or just libwx_msw.a if you opted for a static build ).
Now try building the minimal sample:
-> cd samples/minimal -> cd samples/minimal
-> make -> make
@@ -252,6 +247,5 @@ Cross-compiling TODO:
- resource compiling must be done manually for now (should/can we link the - resource compiling must be done manually for now (should/can we link the
default wx resources into libwx_msw.a?) [ No we can't; the linker won't default wx resources into libwx_msw.a?) [ No we can't; the linker won't
link it in... you have to supply an object file ] link it in... you have to supply an object file ]
- dynamic libraries
- static executables are HUGE -- there must be room for improvement. - static executables are HUGE -- there must be room for improvement.