おいふぉりーのぶろぐ

きっと趣味のブログに違いないです!!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

GTK+ の cairo を最新版にする@Windows

またまた、久々の更新ですが…(パスワードが間違っています。と言われて、FC2 BLOGの管理画面にログインできなくて困りました)

本題ですが、要は cairo のスナップショットをダウンロードしてきて、コンパイルすると言うお話です。まず、最初に私の GTK+ 環境をメモりますね。
GTK+ はここで配布されているgtk-dev-2.10.11-win32-1.exe
新しくする cairo のバージョンは 1.5.4 snapshot
cairo で使われるピクセル操作用のライブラリ pixman のバージョンは 0.9.6。

今週の月曜から色々と試していたのですが、かなりてこずりました。ということで、コンパイル方法の結論を書く前に、ぐだぐだと試行錯誤の流れを書くことにします。4.が本題ですね。

1.. Visual Studio 2005 Express Edition(以下MSVC) でコンパイルを試す。
Avlee氏が MSVC で cairo 1.4.10 をコンパイルされていたので、それを参考にしました。
流れは、 pixman をスタティックライブラリとしてコンパイルして、その後 cairo 本体をコンパイル、 pixman とリンクして DLL 化します。ちなみに cairo は libpng と zlib に依存するので(cairo-features.h の設定で変えられるけど)、これらは GTK+ のパッケージに含まれるものを使用しました。
コンパイルの時に問題となるのが automake が使われていること。私は一旦 Linux 環境で configure 通してから、生成された config.h を修正し、 Makefile.am を見ながら必要なファイルをプロジェクトに追加しました。 cairo を configure すると cairo-features.h も生成されて、この中にどのサーフェースを使えるようにするか?等の設定があります。ここでは、SVG、PDF、PS、WIN32サーフェース、WIN32フォント、PNG関数のサポートをありにしました。
以上で、 MSVC でのコンパイルはうまくいきます。これで、OKと思ったが…

2. GTK+ 中の cairo と自分でコンパイルした cairo を置き換えるとエラーが…
原因は GTK+ で使われる cairo では FreeTypeフォントをサポートしなければならないということでした。したがって、1.の手順で FreeType フォントのサポートを有りにして MSVC でコンパイルしようとしましたが、 unistd.h 等のファイルが足りなくてコンパイルできませんでした。色々悩みましたが…

3. MinGW/MSYS の環境を整えて、コンパイルする。と言う方針に変更。
Cygwin でコンパイルすると Cygwin の Cランタイムがないと動かなくなってしまうので、MinGWというわけです。MSYSというのは今回私ははじめて知ったのですが、こういうことだそうです。早速、ファイルをダウンロードしてきてインストール。ダウンロードしたファイルは以下の通り。msysDTK-xxx.exeというのは autoconf 等が入っているみたいです。
MinGW-5.1.3.exe
MSYS-1.0.10.exe
msysDTK-1.0.1.exe
さて、コンパイルする前に MSYS 上で GTK+ を使えるようにする必要があります。私は、一旦 GTK+ をアンインストールしてもう一度インストールしました。インストールのウィザードで MSYS の環境で GTK+ を使えるようにするオプションがあります。

4. MinGW/MSYS 環境で cairo をコンパイルする。
ここでも、結構てこずったのですが、流れとしては、 MSYS のシェル上で普通に ./configure、 make、 make install を pixman、 cairo の順にすればOKです。
注意事項は以下の通りです。解決方法とともにメモしときます。

※pixman は /usr/local 内にインストールされるが、 pkg-config のパスが /usr/local/pkgconfig に通ってない。cairo の configure 時に怒られます。
ホームディレクトリに .profile を作って PKG_CONFIG_PATH をエクスポートしておく。

※GTK+ のパッケージに含まれる freetype のバージョンを新しくしないと、 FreeType フォントサポートを有効にして cairo をコンパイルできない。 configure の結果でサポートされないと表示されます。
GnuWin32 プロジェクトから freetype のバイナリと開発用のファイルをダウンロードして、 GTK+ パッケージの freetype と置き換える。 bin、include、lib、share の中の freetype のファイルを置き換えればOKです。 bin の中には freetype6.dll と libfreetype-6.dll がありますが、どちらも中身はおなじみたいなので両方置き換えます。(シンボリックリンクにしとけばいいと今思った。NT系のOSならシンボリックリンク使えるので)
私が、今回利用したバージョンは freetype 9.16.3 です。

※cairo の Makefile.am の LDFLAGSに -no-undefined を付け加えて、 automake し直す。
LDFLAGS = -no-undefined @LDFLAGS@
この情報のソースはここです。Cygwin、 MinGW で DLL を作るときはこうしないといけないようです。

※MSYSに含まれる automake はバージョンが古いのでエラーが出る。
私は Cygwin 上の automake を利用しました(バージョンはいくらかな?インストーラで一番新しいの入れたけど)。 automake 自体はコンパイルに関係ないので適当に通せばいいんじゃないかしら。

※MSYS に含まれる libtool の不具合なのかどうか分からないが、次のようなエラーが出る。
*** Warning: This system can not link to static lib archive D:/msys/1.0/local/lib/libpixman-1.la.
*** I have the capability to make that library automatically link in when
*** you link to this library. But I can only do this if you have a
*** shared version of the library, which you do not appear to have.
これは、 libpixman-1.la を削除するか名前を変更すれば良いようです。
この情報のソースはここです。一番下のほうに書いてあります。

以上で、コンパイルはうまくいくはずです。かなり、省略していますが。
make install が終わったら MSYS の /usr/local から cairo 関連のファイルをコピーして GTK+ のフォルダにコピーしてください。
  1. 2007/12/20(木) 03:12:49|
  2. ソフトウェア開発
  3. | トラックバック:0
  4. | コメント:1
<<角度の平均の計算方法 | ホーム | 物忘れ@秋月VFD>>

コメント

みんな の プロフィールは、アクセスアップをお手伝いするサイトです。
http://blog.livedoor.jp/meannano/


より多くのひとに貴方のブログを見てもらえます。
  1. 2007/12/27(木) 03:48:19 |
  2. URL |
  3. みんな の プロフィール #-
  4. [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://tm86eublog.blog42.fc2.com/tb.php/210-9946b383
この記事にトラックバックする(FC2ブログユーザー)

来客数

プロフィール

Euphorie

Author:Euphorie
"おいふぉりー"って呼んでくださいな☆
ハードウェアとかソフトウェアとかの開発に興味があったり。。。
連絡先は上の画像。

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。