[落書きコーナー](Tumblr)この広告は、90日以上更新していないブログに表示しています。諸般の事情*1から、MinGWのクロス開発環境を作った。MinGWのディストリビューションではgcc3が標準だが、gccの配布は最初からMinGWのサポートを含んでいるため通常のgccを適切にconfigureし、ライブラリを配置すればすぐに利用できる。基本パッケージのインストールは依存関係を考慮する必要がある。gccをインストールするまでは順番に注意する。これを書いている段階ではC++コンパイラを含んでいない(今回の目的に不要であるため。実際には、gccをC言語のみでインストールしたあとに更にgccをインストールする必要が有るように思われる)。ディレクトリ構成ディレクトリ構成において重要なのは、hostと同名のディレクトリを準備する必要が有る点。Windows向けのバイナリ(COFF)やヘッダファイルconfigureのprefixとして、gccとbinutilsは/opt/mingwを指定し、他のライブラリ群は/opt/mingw/i386-mingw32msvcを指定する。Linux側で動作するツールであるところのpkg-configも一旦/opt/mingw/i386-mingw32msvcにインストールすることに注意。開発ツールのインストール順番が重要。w32api(ヘッダ)まず、ヘッダファイル群を準備する。これはbinutilsとgccのコンパイルよりも前に必要になる。/opt/mingw/i386-mingw32msvc以下に、w32api-3.13-mingw32-src.tar.gzに含まれるincludeとlibを展開する。mingwrtmingwrt-3.15.1-mingw32.tar.gzを/opt/mingw/i386-mingw32msvc以下に展開する。binutils適当なbinutilsを取得し、configureしてインストールする。--disable-sharedbinutilsはLinux側で動作するので--disable-sharedをする必要は無い。LD_LIBRARY_PATHを管理するのが面倒なのでこれをしている。binutilsは--hostではなく--targetを使う。pkg-config適当なバージョンのpkg-configを取得し、configureしてインストールする。--prefix=/opt/mingw/i386-mingw32msvcpkg-configはLinux側で動作するツールだが、一旦mingw側にインストールする。インストール後、適当な名前(例えばi386-mingw32msvc-pkg-config)で/opt/mingw/binにシンボリックリンクを作成する。--hostを指定する必要は無い。pkg-configをWindows側で使うことがないため。gccインストールする前に、binutilsに対してPATHを通しておく。PATH=/opt/mingw/bin:$PATH適当なバージョンのgccを取得し、configureしてインストールする。gccのソースツリー上でconfigureするのは好ましくないので、可能な限り適当なディレクトリを横に作ってそこで作業する。--disable-libgompgccも--hostではなく--targetを使う。--hostは生成_した_プログラムが動作する場所の指定で、--targetは生成_する_プログラムが動作する場所の指定となる。実際のリンクはプログラムを作るまで発生しないため)。--host=i386-mingw32msvc各種ライブラリのインストール多くのパッケージは、MinGWと正常に動作できるが、通常のWindowsユーザの使用するアプリケーションが外部DLLに依存するのは望ましくないので、以下のconfigオプションを標準的に使用する。--prefix=/opt/mingw/i386-mingw32msvchostに関しては通常の指定だが、--disable-sharedは重要で、これをつけることで生成するライブラリは外部のDLLに依存しなくなる*2。SDLやcairoをDLLとして配布することに(少なくともWindows上では)メリットが無いため、このオプションが推奨される。通常のアプリケーションのコンパイルシステムのpkg-configの代わりに、先にリネームしたi386-mingw32msvc-pkg-configを使う。この方法でインストールしたライブラリはpkg-configを適切に記述しないことが多いので必要に応じて修正する。-lSDLのように表示されるが、実際には必要な-lwinmmが抜けている。これはi386-mingw32msvc/lib/pkgconfig/sdl.pcを修正する必要が有る。リンク時に発生するエラーのほとんどはこれが原因なので、関数名でWeb検索したり、i386-mingw32msvc/libをgrepする等の方法で適切なライブラリオプションを探して追加することで解決できることが多い。*1:"Windows上で正常に動作する"PDFを出力できる簡単なドローソフトが必要になった*2:正確には、Windowsの各種システムDLLやVisualCのランタイムには依存する。A3341itemオブジェクトベースオーディオのためのE-AC-3拡張の規格書を読むaudioはてなブログをはじめよう!mjtさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。