mieki256's diary



2019/11/24() [n年前の日記]

#1 [gimp] cairo-1.12.6がビルドできない

GIMP 2.8.16 を Windows10 x64 1903 + msys 1.0 + mingw でビルドしようとしているのだけど、cairo のビルドができなくてハマっていたり。

以下のサイトに従って作業しているけれど…。

_Cairo < GTK+に必要なライブラリ群のビルド < ビルド | GIMPのビルド - for Windows -

gcc のバージョンは… --version をつければ見れるのかな。

$ gcc --version
gcc.exe (MinGW.org GCC-6.3.0-1) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

6.3.0らしい。

strndup.cのコンパイルエラー。 :

util/cairo-missing/strndup.c をビルドしようとすると ssize_t がどうとかのエラーが出る。

_MSYSでGTK+をビルド (2) - 七誌の開発日記

本来、cairo-1.12.6-ssizet.patch によって、config.h 内に、
#define _SSIZE_T_DEFINED 1
の1行が追加されて、「_SSIZE_T_DEFINED は定義済みだから ssize_t の再定義はしなくていいよ」ということになって、問題は出ないはずなのだけど。どうやら util/cairo-missing/ の中では、config.h は見ていないようで。

util/cairo-missing/cairo-compiler-private.h というファイルを作成して、以下を記述してみた。
#define _SSIZE_T_DEFINED 1
#define HAVE_GETLINE 1
#define HAVE_STRNDUP 1

これで、cairo-missing.h 内の、いくつかの定義がスキップされるはず。一応、util/cairo-missing/strndup.c のコンパイルはできた。

api-special-cases.c でコンパイルエラー。 :

今度は、api-special-cases.c でエラーが出る。

make[4]: Entering directory `/d/home/USERNAME/working/sources/cairo-1.12.6/test'
  CC     cairo_test_suite-api-special-cases.o
api-special-cases.c: In function 'test_cairo_surface_get_font_options':
api-special-cases.c:237:9: error: implicit declaration of function 'likely' [-Werror=implicit-function-declaration]
     if (likely (!cairo_font_options_status (options)))
         ^~~~~
api-special-cases.c:237:5: warning: nested extern declaration of 'likely' [-Wnested-externs] if (likely (!cairo_font_options_status (options))) ^
cc1.exe: some warnings being treated as errors make[4]: *** [cairo_test_suite-api-special-cases.o] Error 1

likely って何だろう…?

grep したところ、src/cairo-compiler-private.h の中で定義が見つかった。cairo-test.h の最後のほうに、cairo-compiler-private.h 内の likely 関係の定義部分をまるっとコピペしてみた。一応ビルドが通った。

cairo-test-suite.exe でエラー :

cairo-test-suite.exe を作るらしいところでエラーが出る。

make[4]: Entering directory `/d/home/USERNAME/working/sources/cairo-1.12.6/test'
  CCLD   cairo-test-suite.exe
C:\Users\USERNAME\AppData\Local\Temp\ccKsBljz.ltrans0.ltrans.o: In function `parse_cmdline':
d:\home\USERNAME\working\sources\cairo-1.12.6\test/cairo-test-runner.c:354: undefined reference to `_cairo_getopt'
C:\Users\USERNAME\AppData\Local\Temp\ccKsBljz.ltrans0.ltrans.o: In function `runner_print_details':
d:\home\USERNAME\working\sources\cairo-1.12.6\test/cairo-test-runner.c:499: undefined reference to `cairo_boilerplate_content_name'
d:\home\USERNAME\working\sources\cairo-1.12.6\test/cairo-test-runner.c:532: undefined reference to `cairo_boilerplate_content_name'
d:\home\USERNAME\working\sources\cairo-1.12.6\test/cairo-test-runner.c:515: undefined reference to `cairo_boilerplate_content_name'
C:\Users\USERNAME\AppData\Local\Temp\ccKsBljz.ltrans0.ltrans.o: In function `append_argv':
d:\home\USERNAME\working\sources\cairo-1.12.6\test/cairo-test-runner.c:279: undefined reference to `cairo_boilerplate_xmalloc'
...
d:\home\USERNAME\working\sources\cairo-1.12.6\test/a1-mask.c:84: undefined reference to `cairo_boilerplate_xmalloc'
C:\Users\USERNAME\AppData\Local\Temp\ccKsBljz.ltrans31.ltrans.o: In function `list_prepend':
d:\home\USERNAME\working\sources\cairo-1.12.6\test/cairo-test-runner.c:130: undefined reference to `cairo_boilerplate_xmalloc'
collect2.exe: error: ld returned 1 exit status
make[4]: *** [cairo-test-suite.exe] Error 1

ググってみたところ、gcc 4.8.x の頃はエラーが出なかったけど、gcc 4.9.0 からエラーが出るようになった、という話を見かけた。

_MinGW-w64 - for 32 and 64 bit Windows / Bugs / #396 4.9.0 cannot build cairo

すると、mingw の gcc をダウングレードしないとダメなのだろうか…。しかし、ググってみても、ダウングレードする方法は見つからず。

gcc に -fno-lto を渡せばなんとかなる、という話も書いてあるようだけど、手元の環境、mingw の gcc 6.3.0 では効果が無いようで。一応、出力されるメッセージは変化してるように見えるけど、結局はエラーが出てビルドが止まってしまう。

諦めた。 :

GIMP 2.8.x を Windows上でビルドするためには、当時のツールをかき集めて、環境構築までしないといかんようだなと…。

そもそも、特定のGIMPプラグインをWindows上でも使えるようにできたらいいな、というのが当初の目的だったはずで、それは GIMP 2.10.14 を使うことで叶うのだから…。GIMP 2.8.x で動かす云々は、もう諦めよう…。

以上、1 日分です。

過去ログ表示

Prev - 2019/11 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project