ホームページ  >  記事  >  運用・保守  >  mingw は Linux 上で実行できますか?

mingw は Linux 上で実行できますか?

青灯夜游
青灯夜游オリジナル
2023-03-15 12:10:162099ブラウズ

mingw は Linux 上で実行できます。 MinGW は、Windows 固有のヘッダー ファイルと GNU ツールセットを使用したインポート ライブラリの無料で利用可能かつ再配布可能なコレクションです。これにより、ユーザーはサードパーティの C ランタイム (C ランタイム) を必要とせずに、GNU/Linux プラットフォーム上でネイティブ Windows プログラムを生成できます。 ) 図書館。

mingw は Linux 上で実行できますか?

このチュートリアルの動作環境: linux7.3 システム、mingw-w64、Dell G3 コンピューター。

mingw とは

#MinGW は、Minimalist GNU for Windows の略称です。これは、自由に利用可能で再配布可能な Windows 固有のヘッダー ファイルと GNU ツールセットを使用したインポート ライブラリのコレクションであり、サードパーティの C ランタイム (C ランタイム) を必要とせずに、GNU/Linux および Windows プラットフォーム上でネイティブ Windows プログラムを生成できます。 ) 図書館。

MinGW は、コンソール モード プログラムが Microsoft の標準 C ランタイム (C ランタイム) ライブラリ (MSVCRT.DLL) を使用できるようにするインクルード ファイルとポート ライブラリのセットです。このライブラリは、すべての NT OS で利用できます。 Windows 95 リリース以降のすべての Windows OS。基本ランタイムを使用すると、GCC を使用して、コンソール モードに準拠した米国標準化機構 (ANSI) プログラムを作成できます。Microsoft が提供する C ランタイムを使用できます。) 拡張機能を基本ランタイムと組み合わせて、 CRT (C ランタイム) と Windows API 関数の両方を使用する完全な権限を持つことができます。

mingw は Linux 上で実行できますか

mingw は Linux 上で実行できますか。 Debian シリーズを例に挙げると、次の方法で mingw インストール パッケージをクエリし、必要に応じてインストールできます。

1. mingw のランタイム ライブラリをクエリする

mingw は Linux 上で実行できますか?

#2. mingw の開発環境をクエリする

mingw は Linux 上で実行できますか?

#3. mingw ビルド パッケージをクエリします

mingw は Linux 上で実行できますか?##4. インストールするハードウェア プラットフォームに適したパッケージを選択します

mingw は Linux 上で実行できますか?

##Linux 上で MinGW を使用して libcurl と zlib を静的にクロスコンパイルする

libcurl は、クロスプラットフォームで使いやすく、強力なネットワーク ライブラリです。コンパイルされたバイナリ パッケージはほとんどの Linux ディストリビューションで利用でき、Mac システムはそれらをコア コンポーネントとして使用します。しかし、Windows プラットフォームでは、手動コンパイルが必要です。言うまでもなく、特別な潔癖症の人 (私など) は余分な DLL を嫌い、それらを静的にリンクする必要があります。この記事は、私の 2 晩の放浪体験を簡単にまとめたもので、MinGW を使用して Linux 上で Windows 用の libcurl 静的ライブラリをコンパイルする方法を説明しています。

STEP1 MinGW コンパイラをインストールする

この手順についてはこれ以上説明しません。ほとんどの Linux ディストリビューションのウェアハウスにこのコンパイラが含まれているはずです。私の ArchLinux を例に挙げます。 , :

~# pacman -S mingw-w64

を実行するだけで十分です。クロスコンパイルが必要なく、Windows 上で直接コンパイルしたい場合は、SourceForge にアクセスして Windows バージョンをダウンロードしてください。

w64

が 64 ビット バージョンであるかどうかを心配する必要はありません。32 ビット プログラムと 64 ビット プログラムの両方をコンパイルできます。私のバージョンを例に挙げてみましょう:

~# 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
2 つの gcc があることがわかります。i686-w64-mingw32-gcc

でコンパイルされたプログラムは 32 ビットであり、

x86_64-w64-mingw32-gcc は 64 ビット バージョンにコンパイルされます。ここで、Hello World (私の Hello World コードを使用できます ^_^) を作成し、それをコンパイルしてみます:

i686-w64-mingw32-gcc hello_world.c -o hello_world.exe
それを仮想マシンに取り込むか、Wine にスローします。通常は、おめでとうございます。最初のステップは完了です。


STEP2 ソースコードをダウンロード

非常に簡単な手順ですが、分からない場合は上のほうに進んでください。右隅。

LibCurl: トップのソース アーカイブ

    zLib: ソース コードをダウンロードしてください
  • OpenSSL: オプション。必要ない場合はコンパイルしないでください。ファイルサイズを増やす
  • 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 フォルダー

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

に移動し、プレフィックスを変更することを忘れないでください。

libssl.a

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

以上がmingw は Linux 上で実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。