(Beachten) Dies ist ein Memo, als ich ein GUI-Programm mit wxWidget unter Ubuntu entwickelte und eine Umgebung vorbereitete, in der ich auch eine Anwendung für Windows entwickeln konnte. Dieser Artikel wurde vor langer Zeit auf Google Sites verfasst. Obwohl der Inhalt veraltet ist, kann ich es nicht ertragen, dass er verschwindet. Deshalb habe ich ihn erneut gedruckt. Es wurde zum Zeitpunkt des Nachdrucks (2020/8) nicht erneut überprüft.
Installieren Sie zunächst einen Compiler (Cross-Compiler), der Programme für Windows unter Linux erstellt.
Zu installierendes Paket
python
$ sudo apt-get install mingw-w64 binutils-mingw-w64 gcc-mingw-w64 g++-mingw-w64
Ausführungsdateien (Programme), die mit gcc-mingw (im Allgemeinen) erstellt wurden, funktionieren nicht alleine. Sie benötigen zwei Dinge, die ausführbare Datei, die kompiliert wurde, und die Laufzeitbibliothek von mingw. Normale Windows-Benutzer verfügen nicht über die MingW-Laufzeitbibliothek. Daher müssen Sie das kompilierte Programm und die MingW-Bibliothek gemeinsam verteilen.
Die mingw-Bibliothek ist im mingw32-Laufzeitpaket enthalten. Kopieren Sie sie daher in Ihr aktuelles Verzeichnis, damit Sie sie damit verteilen können.
runtime
$ cp /usr/share/doc/mingw32-runtime/mingwm10.dll.gz .
$ gunzip mingw10.dll
Um das Programm für Windows unter Linux auszuführen, benötigen Sie ein Programm für 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 (Möglicherweise müssen Sie pthread jetzt nicht separat installieren.)
http://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.9.1/
Von
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 Disable-Shared usw. liegt bei Ihnen.
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 Vergessen Sie nicht, einen Link zur Laufzeitbibliothek zu erstellen.
$ cd samples
$ cd (Was möchten Sie versuchen)
$ make
$ ln -s $SANDBOX/mingw10.dll .
(Ausführung)
$ make clean
Grundsätzlich können Sie wx-config verwenden, das für die Cross-Kompilierung installiert ist.
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)
Suchbegriffe: Ubuntu, Mingw, Wein, Cross Complier, Setup