Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Kann mingw unter Linux laufen?

Kann mingw unter Linux laufen?

青灯夜游
青灯夜游Original
2023-03-15 12:10:162095Durchsuche

mingw kann unter Linux ausgeführt werden. MinGW ist eine Sammlung frei verfügbarer und frei weiterverteilbarer Windows-spezifischer Header-Dateien und Importbibliotheken mithilfe des GNU-Toolsets, die es Benutzern ermöglicht, native Windows-Programme auf der GNU/Linux-Plattform zu generieren, ohne dass eine C-Laufzeitumgebung eines Drittanbieters (C Runtime) erforderlich ist ) Bibliothek.

Kann mingw unter Linux laufen?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, mingw-w64, Dell G3-Computer.

Was ist mingw?

MinGW ist die Abkürzung für Minimalist GNU für Windows. Es handelt sich um eine Sammlung frei verfügbarer und frei weiterverteilbarer Windows-spezifischer Headerdateien und Importbibliotheken mithilfe des GNU-Toolsets, mit denen Sie native Windows-Programme auf GNU/Linux- und Windows-Plattformen generieren können, ohne dass eine C-Laufzeitumgebung eines Drittanbieters (C Runtime) erforderlich ist ) Bibliothek.

MinGW ist eine Reihe von Include-Dateien und Port-Bibliotheken. Seine Funktion besteht darin, Programmen im Konsolenmodus die Verwendung der Standard-C-Runtime-Bibliothek (MSVCRT.DLL) zu ermöglichen. Diese Bibliothek ist für alle gültig In Windows-Betriebssystemversionen über Windows 95 können Sie mit der Basislaufzeit GCC zum Schreiben von Programmen verwenden, die dem American Standards Institute (ANSI) im Konsolenmodus entsprechen, und Sie können die von Microsoft bereitgestellte C-Laufzeiterweiterung in Kombination mit der Basislaufzeit verwenden kann volle Rechte haben, um sowohl CRT- (C Runtime) als auch Windows-API-Funktionen zu verwenden.

Kann mingw unter Linux laufen?

mingw kann unter Linux laufen. Am Beispiel der Debian-Serie können Sie das MinGW-Installationspaket mit der folgenden Methode abfragen und bei Bedarf installieren.

1. Fragen Sie die Laufzeitbibliothek von mingw ab

Kann mingw unter Linux laufen?

3. Fragen Sie das mingw-Build-Paket ab

Kann mingw unter Linux laufen?

Plattform zum Installieren

Kann mingw unter Linux laufen?

Verwenden Sie MinGW, um libcurl statisch mit zlib unter Linux zu kompilierenKann mingw unter Linux laufen?

libcurl ist eine plattformübergreifende, benutzerfreundliche und leistungsstarke Netzwerkbibliothek. Kompilierte Binärpakete sind in den meisten Linux-Distributionen verfügbar und werden von Mac-Systemen als Kernkomponente verwendet. Aber auf der Windows-Plattform ist eine manuelle Kompilierung erforderlich, ganz zu schweigen davon, dass einige Leute mit besonderer Mysophobie (wie ich) die zusätzlichen DLLs wirklich hassen und sie statisch verknüpfen müssen. Dieser Artikel ist eine kleine Zusammenfassung meiner zwei Abende voller Erfahrung und erklärt, wie man MinGW zum Kompilieren der statischen libcurl-Bibliothek für Windows unter Linux verwendet. SCHRITT 1 Installieren Sie den MinGW-Compiler

Ich werde nicht näher auf diesen Schritt eingehen. Nehmen wir als Beispiel mein ArchLinux, führen Sie einfach Folgendes aus:

~# pacman -S mingw-w64
. Wenn Sie keine Kreuzkompilierung benötigen und direkt unter Windows kompilieren möchten, gehen Sie bitte zu SourceForge, um die Windows-Version herunterzuladen. Machen Sie sich keine Sorgen darüber, ob w64 die 64-Bit-Version ist, es kann sowohl 32-Bit- als auch 64-Bit-Programme kompilieren. Nehmen wir meine Version als Beispiel:
~# pacman -Ql mingw-w64-gcc| grep '/usr/bin/.*gcc$'
mingw-w64-gcc /usr/bin/i686-w64-mingw32-gcc
mingw-w64-gcc /usr/bin/x86_64-w64-mingw32-gcc

Sie können sehen, dass es zwei gccs gibt. Das mit i686-w64-mingw32-gcc kompilierte Programm ist 32-Bit und x86_64-w64 -mingw32-gcc wird in die 64-Bit-Version kompiliert. Schreiben Sie jetzt einfach einen Hello World (Sie können meinen Hello World-Code verwenden ^_^) und versuchen Sie dann, ihn zu kompilieren:

i686-w64-mingw32-gcc hello_world.c -o hello_world.exe

Bringen Sie ihn zur virtuellen Maschine oder werfen Sie ihn in Wine. Wenn er normal ausgeführt werden kann, herzlichen Glückwunsch. Der erste Schritt ist abgeschlossen.

w64是不是64位版本,它既可以编译32位又可以编译64位程序。还是以我的版本为例:

$ ./Configure no-shared --cross-compile-prefix=i686-w64-mingw32- mingw
$ make

可以看到有两个gcc,用i686-w64-mingw32-gcc编译出来的程序就是32位的,而x86_64-w64-mingw32-gcc编译出来的就是64位的。现在,随便写个Hello World(你可以用我的Hello World代码 ^_^),然后编译试试:

make -f Makefile.m32 CFG=-zlib

把它拿到虚拟机或扔进Wine里,如果能正常运行,那么恭喜你,第一步完成了。

STEP2 下载源码

很简单的步骤,如果自己搞不定的建议直接右上角。

  • LibCurl:最上面的Source Archives
  • zLib:请下Source Code
  • OpenSSL:可选,如果没有必要就不要编译,会极大地增加文件体积

curl-7.35.0zlib-1.2.8(可能还有openssl-1.0.1f)这几个文件夹放在同一个目录下,然后进行下一步。

STEP3 编译源码

先打开zlib/win32文件夹下的Makefile.gcc文件,把PREFIX =这行改成STEP1里的gcc前缀,对于我来说就是PREFIX = i686-w64-mingw32-。把这个文件拷贝到zlib文件夹下,然后在zlib文件夹下make -f Makefile.gcc,你就应该能看到libz.a这个文件了。

如果你要编译OpenSSL,那么就去openssl文件夹下

make -f Makefile.m32 CFG=-zlib-ssl

即可,记得改prefix。生成libssl.alibcrypto.a

SCHRITT2 Laden Sie den Quellcode herunter 🎜🎜🎜sehr einfache Schritte. Wenn Sie es nicht herausfinden können, gehen Sie einfach nach oben rechte Ecke. 🎜
  • LibCurl: Die Top-Quellarchive
  • zLib: Bitte Quellcode herunterladen
  • OpenSSL: Optional, nicht kompilieren, wenn es nicht notwendig ist, da es stark zunimmt Dateigröße
🎜Vergleichen Sie curl-7.35.0 und zlib-1.2.8 (und möglicherweise openssl-1.0.1f) Legen Sie diese Ordner im selben Verzeichnis ab und fahren Sie dann mit dem nächsten Schritt fort. 🎜🎜🎜SCHRITT3 Kompilieren Sie den Quellcode🎜🎜🎜Öffnen Sie zunächst die Datei <code>Makefile.gcc im Ordner zlib/win32 und ändern Sie die Zeile PREFIX = In SCHRITT 1 wird es zum gcc-Präfix, das für mich PREFIX = i686-w64-mingw32- ist. Kopieren Sie diese Datei in den Ordner zlib, dann make -f Makefile.gcc im Ordner zlib, und Sie sollten sie sehen können libz.aDiese Datei. 🎜🎜Wenn Sie OpenSSL kompilieren möchten, gehen Sie zum OpenSSL-Ordner 🎜
for x in vtls/openssl.o vtls/gtls.o vtls/vtls.o vtls/nss.o vtls/qssl.o vtls/polarssl.o vtls/polarssl_threadlock.o vtls/axtls.o vtls/cyassl.o vtls/curl_schannel.o vtls/curl_darwinssl.o vtls/gskit.o
do
mv `basename $x` vtls
done
🎜 und denken Sie daran, das Präfix zu ändern. Generieren Sie libssl.a und libcrypto.a🎜

最后去libcurl里的lib文件夹里修改Makefile.m32文件,在CC = $(CROSSPREFIX)gcc上加一行CROSSPREFIX=i686-w64-mingw32-(请按需修改),然后把下面CFLAGS那行改成这样CFLAGS = -g -O2 -Wall -DCURL_DISABLE_LDAP,最后

make -f Makefile.m32 CFG=-zlib

或是

make -f Makefile.m32 CFG=-zlib-ssl

make到最后时会报个错,是因为文件没放对地方,手动挪一下即可

for x in vtls/openssl.o vtls/gtls.o vtls/vtls.o vtls/nss.o vtls/qssl.o vtls/polarssl.o vtls/polarssl_threadlock.o vtls/axtls.o vtls/cyassl.o vtls/curl_schannel.o vtls/curl_darwinssl.o vtls/gskit.o
do
mv `basename $x` vtls
done

然后再make一下,libcurl.a文件应该就出现了。
如果生成dll出错也不要紧,我们要的是.a文件

STEP4 测试

现在,你可以找一段libcurl的demo来测试了。注意要加上宏定义CURL_STATICLIB

i686-w64-mingw32-gcc -I. -L. -DCURL_STATICLIB curl_demo.c -lcurl -lz -lws2_32 -o curl_demo.exe

如果你因为不知道gcc-I-L选项的用法而编译不过,请自行Google。如果你加了ssl支持,你需要链接更多的库,具体请根据错误信息自行Google。

最后提醒一点:请把-lcurl选项放在源文件后面,我当初就是因为这个死活链接不过。最后把curl_demo.exe拖进虚拟机里,如果一切正常,那么恭喜你,你成功了。

相关推荐:《Linux视频教程

Das obige ist der detaillierte Inhalt vonKann mingw unter Linux laufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeutet Linux-Ibus?Nächster Artikel:Was bedeutet Linux-Ibus?