Maison > Article > Opération et maintenance > Mingw peut-il fonctionner sous Linux ?
mingw peut fonctionner sous Linux. MinGW est une collection disponible gratuitement et librement redistribuable de fichiers d'en-tête et de bibliothèques d'importation spécifiques à Windows utilisant l'ensemble d'outils GNU, qui permet aux utilisateurs de générer des programmes Windows natifs sur la plate-forme GNU/Linux sans avoir besoin d'un runtime C tiers (C Runtime ) bibliothèque.
L'environnement d'exploitation de ce tutoriel : système linux7.3, mingw-w64, ordinateur Dell G3.
Qu'est-ce que mingw
MinGW est l'abréviation de Minimalist GNU pour Windows. Il s'agit d'une collection de fichiers d'en-tête et de bibliothèques d'importation spécifiques à Windows disponibles gratuitement et librement redistribuables à l'aide de l'ensemble d'outils GNU, vous permettant de générer des programmes Windows natifs sur les plates-formes GNU/Linux et Windows sans avoir besoin d'un runtime C tiers (C Runtime ) bibliothèque.
MinGW est un ensemble de fichiers d'inclusion et de bibliothèques de ports. Sa fonction est de permettre aux programmes en mode console d'utiliser la bibliothèque C Runtime (C Runtime) standard de Microsoft (MSVCRT.DLL). Cette bibliothèque est valable sur tous les systèmes d'exploitation NT. Versions du système d'exploitation Windows supérieures à Windows 95, en utilisant le runtime de base, vous pouvez utiliser GCC pour écrire des programmes conformes à l'American Standards Institute (ANSI) en mode console, et vous pouvez utiliser l'extension C Runtime fournie par Microsoft, avec Combiné avec le runtime de base, vous peut avoir tous les droits pour utiliser les fonctions CRT (C Runtime) et Windows API.
mingw peut-il fonctionner sous Linux ?
mingw peut fonctionner sous Linux. En prenant la série Debian comme exemple, vous pouvez interroger le package d'installation MinGW via la méthode suivante et l'installer si nécessaire.
1. Interrogez la bibliothèque d'exécution de mingw
2. Interrogez l'environnement de développement de mingw
3. Sélectionnez le package adapté à votre propre matériel. plate-forme à installer
Utilisez MinGW pour compiler de manière statique libcurl avec zlib sous Linux
libcurl est une bibliothèque réseau multiplateforme, facile à utiliser et puissante. Les packages binaires compilés sont disponibles dans la plupart des distributions Linux et les systèmes Mac les utilisent comme composant principal. Mais sur la plate-forme Windows, une compilation manuelle est requise, sans compter que certaines personnes souffrant de mysophobie particulière (comme moi) détestent vraiment les DLL supplémentaires et doivent les lier statiquement. Cet article est un petit résumé de mes deux nuits d'expérience, expliquant comment utiliser MinGW pour compiler la bibliothèque statique libcurl pour Windows sous Linux. ÉTAPE 1 Installez le compilateur MinGW
Je n'entrerai pas dans les détails de cette étape. La plupart des distributions Linux devraient l'avoir dans leurs entrepôts. En prenant mon ArchLinux comme exemple, exécutez simplement :~# pacman -S mingw-w64. Si vous n'avez pas besoin de compilation croisée et souhaitez compiler directement sous Windows, veuillez vous rendre sur SourceForge pour télécharger la version Windows. Ne vous inquiétez pas de savoir si
w64
est la version 64 bits, il peut compiler des programmes 32 bits et 64 bits. Prenons ma version comme exemple : ~# 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-gccVous pouvez voir qu'il y a deux gccs. Le programme compilé avec
i686-w64-mingw32-gcc
est en 32 bits, et x86_64-w64. -mingw32-gcc
est compilé en version 64 bits. Maintenant, écrivez simplement un Hello World (vous pouvez utiliser mon code Hello World ^_^), puis essayez de le compiler : i686-w64-mingw32-gcc hello_world.c -o hello_world.exeApportez-le à la machine virtuelle ou lancez-le dans Wine. S'il peut fonctionner normalement, félicitations, La première étape est terminée.
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
et zlib-1.2.8
(et éventuellement openssl-1.0.1f) Placez ces dossiers dans le même répertoire, puis passez à l’étape suivante. 🎜🎜🎜ÉTAPE 3 Compilez le code source🎜🎜🎜Ouvrez d'abord le fichier <code>Makefile.gcc
sous le dossier zlib/win32
et modifiez la ligne PREFIX =
Cela devient le préfixe gcc dans STEP1, qui pour moi est PREFIX = i686-w64-mingw32-
. Copiez ce fichier dans le dossier zlib
, puis make -f Makefile.gcc
sous le dossier zlib
, et vous devriez pouvoir le voir libz.aCe fichier. 🎜🎜Si vous souhaitez compiler OpenSSL, alors allez dans le dossier openssl 🎜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🎜 et pensez à changer le préfixe. Générez
libssl.a
et 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视频教程》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!