[Ubuntu]クロスコンパイル環境構築

TIPS
TIPS

Windows環境向けの .dll ファイルをUbuntu上で作成する「クロスコンパイル」という非常に強力で便利な方法があります。

Ubuntu上でWindows向けのコンパイル環境(MinGW-w64)を構築する手順をステップ・バイ・ステップで解説します。Windowsで環境を作るよりもコマンド一発で終わるため、実は非常に簡単です。

ステップ 1:パッケージリストの更新

まずはUbuntuのシステムを最新状態にします。端末(ターミナル)を開き、以下のコマンドを実行します。

sudo apt update
sudo apt upgrade -y

ステップ 2:MinGW-w64(クロスコンパイラ)のインストール

Ubuntu上でWindows用の実行ファイル(.exe)やライブラリ(.dll)を作成するためのコンパイラをインストールします。

sudo apt install mingw-w64 -y

これだけで、Windows向けの64ビット版および32ビット版のC/C++コンパイラがすべてインストールされます。

ステップ 3:ネイティブコンパイラのインストール(推奨)

Ubuntu自身のプログラムをコンパイルするための標準ツールセットも入れておくと何かと便利です(すでにインストールされている場合も多いです)。

sudo apt install build-essential -y

ステップ 4:UbuntuでのDLLコンパイル方法

環境構築は以上で完了です。C++コードをUbuntu上でコンパイルして、Windows用の .dll を作成するには、以下のコマンドを使用します。

64ビット版のWindows向けにコンパイルする場合:

x86_64-w64-mingw32-g++ -shared -o 20_SMA_EMA.dll 20_SMA_EMA.cpp -Wl,--kill-at
  • x86_64-w64-mingw32-g++: 64ビットWindows向けのC++コンパイラです。
  • -shared: DLL(共有ライブラリ)を作成するオプションです。
  • -Wl,--kill-at: Windows API(__stdcall)特有の関数名の文字化け(@マークなどの装飾)を防ぎ、外部アプリケーションで正しく認識させるための必須オプションです。

[Ubuntu]クロスコンパイル環境構築
[Windows]MinGWのインストール
WindowsでC/C++開発を行うための「MinGW-w64」環境を、MSYS2を用いて構築する手順を解説します。インストーラーの導入からパッケージ更新、コンパイラのインストール、環境変数(PATH)の設定、動作確認までを網羅した実践的なガイドです。
Q よくある質問 (FAQ)
Q. Ubuntu上でWindows用の32ビット版DLLを作成するにはどうすればよいですか?
A.
64ビット用の `x86_64-w64-mingw32-g++` の代わりに、32ビット用コンパイラである `i686-w64-mingw32-g++` コマンドを使用することでコンパイル可能です。
Q. コンパイル時の `-Wl,--kill-at` オプションにはどのような役割がありますか?
A.
Windows API特有の関数名に対する「@」などの名前装飾(文字化け)を防ぎ、作成したDLLが外部のWindowsアプリケーションから正しく認識・呼び出しできるようにする役割があります。

コメント

タイトルとURLをコピーしました