ホームページ >運用・保守 >Linuxの運用と保守 >mingw は Linux 上で実行できますか?
mingw は Linux 上で実行できます。 MinGW は、Windows 固有のヘッダー ファイルと GNU ツールセットを使用したインポート ライブラリの無料で利用可能かつ再配布可能なコレクションです。これにより、ユーザーはサードパーティの C ランタイム (C ランタイム) を必要とせずに、GNU/Linux プラットフォーム上でネイティブ Windows プログラムを生成できます。 ) 図書館。
このチュートリアルの動作環境: 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 のランタイム ライブラリをクエリする #2. mingw の開発環境をクエリする #3. mingw ビルド パッケージをクエリします##4. インストールするハードウェア プラットフォームに適したパッケージを選択します
##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 にスローします。通常は、おめでとうございます。最初のステップは完了です。
非常に簡単な手順ですが、分からない場合は上のほうに進んでください。右隅。
LibCurl: トップのソース アーカイブ
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 サイトの他の関連記事を参照してください。