Bolehkah mingw berjalan di linux?

青灯夜游
青灯夜游asal
2023-03-15 12:10:162189semak imbas

mingw boleh dijalankan pada linux. MinGW ialah koleksi fail pengepala khusus Windows dan perpustakaan import yang tersedia secara percuma dan boleh diedarkan secara bebas menggunakan set alat GNU, yang membolehkan pengguna menjana program Windows asli pada platform GNU/Linux tanpa memerlukan masa jalan C pihak ketiga (C Runtime). ) perpustakaan.

Bolehkah mingw berjalan di linux?

Persekitaran pengendalian tutorial ini: sistem linux7.3, mingw-w64, komputer Dell G3.

Apakah mingw?

MinGW ialah singkatan kepada Minimalist GNU for Windows. Ia ialah koleksi fail pengepala khusus Windows yang boleh didapati secara percuma dan boleh diedarkan secara bebas serta perpustakaan import menggunakan set alat GNU, membolehkan anda menjana program Windows asli pada platform GNU/Linux dan Windows tanpa memerlukan masa jalan C pihak ketiga (C Runtime). ) perpustakaan.

MinGW ialah satu set fail dan perpustakaan port yang membenarkan atur cara mod konsol menggunakan perpustakaan C Runtime (MSVCRT.DLL) standard Microsoft, yang tersedia pada semua OS NT Ia sah pada semua OS Windows di atas Keluaran Windows 95 Menggunakan masa jalan asas, anda boleh menggunakan GCC untuk menulis program Organisasi Standard Amerika (ANSI) yang mematuhi mod konsol Anda boleh menggunakan sambungan C Runtime yang disediakan oleh Microsoft, digabungkan dengan masa jalanan asas, anda boleh mempunyai hak penuh untuk menggunakan kedua-dua fungsi CRT (C Runtime) dan Windows API.

Bolehkah mingw berjalan di Linux?

Bolehkah mingw berjalan di Linux. Mengambil siri Debian sebagai contoh, anda boleh menanyakan pakej pemasangan MinGW melalui kaedah berikut dan memasangnya mengikut keperluan.

1. Tanya perpustakaan masa jalan mingw

Bolehkah mingw berjalan di linux?

2. 🎜 >3. Tanya pakej binaan mingw

Bolehkah mingw berjalan di linux?

4. Pilih pakej yang sesuai untuk platform perkakasan anda untuk dipasang

Bolehkah mingw berjalan di linux?

Gunakan MinGW untuk menyusun silang libcurl secara statik dengan zlib di bawah LinuxBolehkah mingw berjalan di linux?

libcurl ialah pustaka rangkaian merentas platform, mudah digunakan dan berkuasa. Pakej binari yang disusun tersedia dalam kebanyakan pengedaran Linux, dan sistem Mac menggunakannya sebagai komponen teras. Tetapi pada platform Windows, kompilasi manual diperlukan, apatah lagi bahawa sesetengah orang yang mempunyai mysophobia khas (seperti saya) sangat membenci DLL tambahan dan perlu memautkannya secara statik. Artikel ini ialah ringkasan kecil pengalaman dua malam saya melambung, menerangkan cara menggunakan MinGW untuk menyusun perpustakaan statik libcurl untuk Windows di bawah Linux. LANGKAH1 Pasang pengkompil MinGW

Saya tidak akan menerangkan secara terperinci tentang langkah ini Kebanyakan pengedaran Linux sepatutnya mempunyainya dalam gudang mereka , laksanakan :

sudah memadai. Jika anda tidak memerlukan kompilasi silang dan ingin menyusun terus pada Windows, sila pergi ke SourceForge untuk memuat turun versi Windows. Jangan risau sama ada

itu adalah versi 64-bit, ia boleh menyusun atur cara 32-bit dan 64-bit. Mari kita ambil versi saya sebagai contoh:

~# pacman -S mingw-w64
Anda boleh melihat bahawa terdapat dua gcc Program yang disusun dengan

ialah 32-bit, dan program yang disusun dengan w64 ialah 64-bit. . Sekarang, tulis sahaja Hello World (anda boleh menggunakan kod Hello World saya ^_^), dan kemudian cuba untuk menyusunnya:

~# 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

Bawa ia ke mesin maya atau buang ke dalam Wine, jika ia berfungsi seperti biasa Run, kemudian tahniah, langkah pertama selesai. i686-w64-mingw32-gccx86_64-w64-mingw32-gcc

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


LANGKAH2 Muat turun kod sumber

Langkah yang sangat mudah, jika anda tidak dapat memahaminya, sila pergi ke sudut kanan atas.

LibCurl: Arkib Sumber teratas

zLib: Sila muat turun Kod Sumber

    OpenSSL: Pilihan, jangan susun jika tidak perlu, ia akan sangat berguna besarkan saiz fail
  • Letakkan folder
  • dan
  • (dan mungkin
  • ) dalam direktori yang sama, dan kemudian teruskan ke langkah seterusnya.

curl-7.35.0LANGKAH3 Susun kod sumberzlib-1.2.8openssl-1.0.1f

Mula-mula buka fail

di bawah folder dan tukar baris kepada awalan gcc dalam STEP1 Untuk Bagi saya ia

. Salin fail ini ke folder

, kemudian zlib/win32 di bawah folder Makefile.gcc dan anda sepatutnya dapat melihat fail PREFIX =. PREFIX = i686-w64-mingw32-zlibJika anda ingin menyusun OpenSSL, kemudian pergi ke folder openssl zlibmake -f Makefile.gcclibz.a dan ingat untuk menukar awalan. Hasilkan

dan

最后去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视频教程

Atas ialah kandungan terperinci Bolehkah mingw berjalan di linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah maksud linux ibus?Artikel seterusnya:Apakah maksud linux ibus?