Entwicklungsübergreifende Umgebung (Entwicklung von Programmen für Windows unter Linux)

(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 des Compilers und der Ausführungsumgebung

1) Installieren Sie das Cross-Compiler-Paket gcc

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

2) Erstellen Sie eine Testumgebung für Windows-Programme in einer Linux-Umgebung

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

3) Mit Beispielprogramm testen

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 

4) Legen Sie Umgebungsvariablen fest

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

Installieren Sie Header und Bibliotheken für Multithreading

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/

Erstellen Sie wxWidgets für die Cross-Kompilierung (wenn Sie möchten)

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

So kompilieren Sie die Quelle mit wxWidgets

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)

Verweise

Suchbegriffe: Ubuntu, Mingw, Wein, Cross Complier, Setup

Recommended Posts

Entwicklungsübergreifende Umgebung (Entwicklung von Programmen für Windows unter Linux)
Entwicklung der Django-Umgebung unter Windows 10
Erstellen Sie eine Linux-Umgebung unter Windows 10
Installieren Sie die Python-Entwicklungsumgebung unter Windows 10
pykintone unter Windows Subsystem für Linux
Erstellen einer Umgebung für "Tello_Video" unter Windows
Erstellen Sie eine Kubernetes-Umgebung für die Entwicklung unter Ubuntu
Erstellen Sie eine mruby-Entwicklungsumgebung für ESP32 (Linux Edition)
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (3) GVim8.0 und Python3.6
Erstellen Sie eine lokale Entwicklungsumgebung für Laravel6.X auf Ihrem Mac
Erstellen Sie eine komfortable Python 3 (Anaconda) -Entwicklungsumgebung mit Windows
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (1)
Erstellen Sie eine Umgebung für MkDocs unter Amazon Linux (versucht)
Für ArcPy geeignete Entwicklungsumgebung
Python + Kivy-Entwicklung unter Windows
Bereiten Sie die Chainer-Umgebung unter Windows vor
F2py unter Miniconda für Windows
Erstellen Sie eine Python-Umgebung unter Windows
Linux unter Windows -1-: Einführung in Debian
[Zum Organisieren] Python-Entwicklungsumgebung
[Tensorflow] Aufbau der Tensorflow-Umgebung unter Windows 10
Aufbau einer Linux-Umgebung (in einer WSL-Umgebung)
Verwenden Sie Linux unter Windows 10 (WSL2)
Linux-Anfänger erstellen eine Ubuntu 16.04-Umgebung auf Docker (für Mac) - erste Hälfte
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (2) Grundeinstellungen
Hinweise zum Erstellen einer Linux-Umgebung mit VirtualBox + Vagrant unter Windows 10
[Linux] [Grundeinstellungen] Inhalt der Einrichtung der Entwicklungsumgebung
So richten Sie WSL2 unter Windows 10 ein und erstellen eine Lernumgebung für Linux-Befehle
Wettbewerb mit VS-Code Erstellen Sie eine Python-Umgebung für Profis unter Windows
Python-Umgebungskonstruktionsnotiz unter Windows 10
Beispiel für die Erstellung einer Python-Entwicklungsumgebung unter Windows (wsl2, vscode, pipenv)
Richten Sie eine Python-Entwicklungsumgebung unter Ubuntu ein
Aufbau einer Anaconda-Python-Umgebung unter Windows 10
Python2.7-Installation in einer Windows 32-Bit-Umgebung
[Für Anfänger] Django -Entwicklungsumgebung Bau-
[Python3] Aufbau der Entwicklungsumgebung << Windows Edition >>
Optionen für die Python-Entwicklungsumgebung für Mai 2020
Aufbau einer Python-Entwicklungsumgebung unter macOS
Emacs-Einstellungen für die Python-Entwicklungsumgebung
[Linux] Aufbau einer Docker-Umgebung auf Redhat
Führen Sie die Python 3.5.2-Umgebung unter Amazon Linux ein
[Definitive Edition] Erstellen einer Umgebung zum Erlernen des "maschinellen Lernens" mit Python unter Windows
Vorgehensweise zum Erstellen einer Kube-Umgebung unter Amazon Linux2 (aws) ~ (mit Bonus)
Erstellen Sie eine Python-Entwicklungsumgebung unter Windows (Remote-WSL für Visual Studio Code).
Setzen Sie die MeCab-Bindung für Python unter Windows, Mac und Linux mit pip ein
Erstellen Sie Linux in einer Windows-Umgebung. Schritte zum Installieren und Migrieren von Laradock
Hinweise zur Verwendung von OpenCV mit Windows 10 Python 3.8.3.
[UE4] Erstellen Sie DedicatedServer unter Windows und Linux
Windows Subsystem für Linux wird nicht angezeigt
Hinzufügen einer lokalen Entwicklungsumgebung unter MacOS
Python-Entwicklungsumgebung für macOS mit venv 2016
Build-Umgebung für Python 2.7, 3.4, 3.5-Erweiterungsmodule unter Windows
Konstruktionsverfahren für die Python-Projektumgebung (für Windows)
Installieren Sie wsl2 und Master Linux unter Windows
Windows → Linux Tipps zum Einbringen von Daten
Installationsverfahren für WSL2 (Windows Subsystem für Linux)