(Remarquer) Ceci est un mémo lorsque je développais un programme GUI en utilisant wxWidget sur ubuntu et que je préparais un environnement où je pourrais également développer une application pour Windows. Cet article a été écrit sur Google Sites il y a longtemps, et bien que le contenu soit obsolète, je ne supporte pas qu'il disparaisse, alors je l'ai réimprimé. Il n'a pas été revérifié au moment de la réimpression (2020/8).
Tout d'abord, installez un compilateur (cross-compilateur) qui crée des programmes pour Windows sous Linux.
Package à installer
python
$ sudo apt-get install mingw-w64 binutils-mingw-w64 gcc-mingw-w64 g++-mingw-w64
Les fichiers d'exécution (programmes) créés avec gcc-mingw (généralement) ne fonctionnent pas seuls. Vous avez besoin de deux choses, le fichier exécutable qui a été compilé et la bibliothèque d'exécution de mingw. Les utilisateurs Windows normaux ne disposent pas de la bibliothèque d'exécution mingw, vous devez donc distribuer le programme compilé et la bibliothèque mingw ensemble.
La bibliothèque mingw est incluse dans le package mingw32-runtime-package, donc copiez-la dans votre répertoire actuel afin de pouvoir la distribuer avec elle.
runtime
$ cp /usr/share/doc/mingw32-runtime/mingwm10.dll.gz .
$ gunzip mingw10.dll
Afin d'exécuter le programme pour Windows sur Linux, vous avez besoin d'un programme pour agir pour Windows
install_wine
$ sudo apt-get install wine
hello.cpp
#include <iostream>
int main(int ac,char*av[]){
std::cout<<"hello"<<std::endl;
return 0;
}
test
$ i686-w64-mingw32-g++ -static-libgcc -static-libstdc++ hello.cpp
setenv4cross.sh
export CC=i686-w64-mingw32-gcc
export CXX=i686-w64-mingw32-c++
export LD=i686-w64-mingw32-ld
export AR=i686-w64-mingw32-ar
export AS=i686-w64-mingw32-as
export NM=i686-w64-mingw32-nm
export STRIP=i686-w64-mingw32-strip
export RANLIB=i686-w64-mingw32-ranlib
export DLLTOOL=i686-w64-mingw32-dlltool
export OBJDUMP=i686-w64-mingw32-objdump
export RESCOMP=i686-w64-mingw32-windres
export WINDRES=i686-w64-mingw32-windres
set
$ source setenv4cross.sh
pthread (Vous n'aurez peut-être pas besoin d'installer pthread séparément maintenant)
http://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.9.1/
De
install_pthread
$ export SANDBOX=~/src/cross
$ mkdir pthread
$ tar xvf pthreads-w32-2.9.0-mingw32-pre-20110507-2-src.tar.lzma --lzma
# $ pkgbuild -e prep
# $ pkgbuild -e patch
# $ pkgbuild -e configure
$ cd pthreads
$ make CROSS=i686-w64-mingw32- clean GC-inlined -f GNUmakefile
$ mkdir -p $SANDBOX/{include,lib,bin}
$ cp libpthreadGC2.a $SANDBOX/lib/
$ cp *.h $SANDBOX/include/
$ cp pthreadGC2.dll $SANDBOX/bin/
Compile and install Désactiver le partage, etc. dépend de vous.
install wxWidgets
$ tar xjf wxWidgets-2.8.12.tar.bz
$ cd wxWidget-2.8.12
$ ./configure --prefix=/usr/local/i586-mingw32 --host=i586-mingw32msvc --enable-unicode --build=`./config.guess` --disable-shared
$ make
$ sudo make install
Test sample N'oubliez pas de créer un lien vers la bibliothèque d'exécution.
$ cd samples
$ cd (Ce que tu veux essayer)
$ make
$ ln -s $SANDBOX/mingw10.dll .
(Exécution)
$ make clean
Fondamentalement, vous pouvez utiliser wx-config installé pour la compilation croisée.
MINGW_PREFIX=i586-mingw32msvc
CXX=$(MINGW_PREFIX)-g++
LD=$(MINGW_PREFIX)-ld
WXCONFIG=/usr/local/i586-mingw32/bin/wx-config
WXCPPFLAGS=`$(WXCONFIG) --cppflags`
WXLIBS=`$(WXCONFIG) --libs`
t.exe: t.cpp
$(CXX) $(WXCPPFLAGS) $(CPPFLAGS) -o t.exe t.cpp $(WXLIBS)
Mots clés de recherche: ubuntu, mingw, wine, cross complier, setup