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.
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
3. Fragen Sie das mingw-Build-Paket ab
Plattform zum Installieren
Verwenden Sie MinGW, um libcurl statisch mit zlib unter Linux zu kompilieren
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
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
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
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 下载源码
很简单的步骤,如果自己搞不定的建议直接右上角。
把curl-7.35.0
和zlib-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.a
和libcrypto.a
curl-7.35.0
und zlib-1.2.8
(und möglicherweise openssl-1.0.1f< / code>) 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 =</code > In SCHRITT 1 wird es zum gcc-Präfix, das für mich <code>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 < code>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
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!