GIMP developersのhello.cをWindows環境でビルドしようとした話

GIMP コンピュータ
GIMP
GIMP developersサイトにあるソースコードhello.cをWindows環境でビルド出来ないか試行錯誤してみました。
https://developer.gimp.org/writing-a-plug-in/1/index.html

gccを使うらしいのでmsys2をインストール

msys2とmingw64の関係を理解しているとはいいがたいのですが、64bitでビルドするためにはmingw64だろうということでmingw64のターミナルを起動して作業を開始

mingw64を起動

gccのパッケージ名を検索

pacman -Ss gcc | grep ^mingw64

gccをインストール

pacman -S mingw-w64-x86_64-gcc

gccのバージョンを確認

gcc --version
gcc.exe (Rev10, Built by MSYS2 project) 11.2.0
Copyright (C) 2021 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.

gimpをインストール

pacman -S mingw-w64-x86_64-gimp

gimpの実行

gimp
Segmentation fault

起動せず。

作業用ディレクトリの作成

mkdir sources
cd sources

hello.cのダウンロード

wget https://developer.gimp.org/writing-a-plug-in/1/hello.c

gimptoolでビルド

gimptool-2.0 --build hello.c
'pkg-config' is not recognized as an internal or external command,
operable program or batch file.
No output from 'pkg-config --cflags gimpui-2.0'

pkg-configがどうのと出力されている。

 pkg-config
bash: pkg-config: command not found

以下のパッケージをインストールしてみる。

pacman -S mingw-w64-x86_64-toolchain

確認

# pkg-config --version
1.8.0

gimptoolでビルド2回目

gimptool-2.0 --build hello.c
gcc  -IC:/msys64/mingw64/include/gimp-2.0 -IC:/msys64/mingw64/include/gdk-pixbuf-2.0 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/glib-2.0 -IC:/msys64/mingw64/lib/glib-2.0/include -IC:/msys64/mingw64/include/libpng16 -IC:/msys64/mingw64/include/cairo -IC:/msys64/mingw64/include/lzo -IC:/msys64/mingw64/include/freetype2 -IC:/msys64/mingw64/include/harfbuzz -IC:/msys64/mingw64/include/pixman-1 -IC:/msys64/mingw64/include/gegl-0.4 -IC:/msys64/mingw64/include/gio-win32-2.0 -IC:/msys64/mingw64/include/json-glib-1.0 -IC:/msys64/mingw64/include/babl-0.1 -IC:/msys64/mingw64/include/gtk-2.0 -IC:/msys64/mingw64/lib/gtk-2.0/include -IC:/msys64/mingw64/include/pango-1.0 -IC:/msys64/mingw64/include/fribidi -IC:/msys64/mingw64/include/atk-1.0 -mms-bitfields  -o 'hello' 'hello.c'  -mwindows -LC:/msys64/mingw64/lib -lgimpui-2.0 -lgimpwidgets-2.0 -lgimpmodule-2.0 -lgimp-2.0 -lgimpmath-2.0 -lgimpconfig-2.0 -lgimpcolor-2.0 -lgimpbase-2.0 -lgegl-0.4 -lgegl-npd-0.4 -lm -lgmodule-2.0 -ljson-glib-1.0 -lbabl-0.1 -lgtk-win32-2.0 -lgdk-win32-2.0 -limm32 -lshell32 -lole32 -Wl,-luuid -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -lgdi32 -lmsimg32 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find 'hello.c': No such file or directory
collect2.exe: error: ld returned 1 exit status

メッセージが変わった。ld.exeでhello.cが見つからないと言って停止。

自分の力量ではこれの解決は難しそうなので正攻法は断念。

gccから-lintlまでがコンパイルコマンドの様にみえるので、こちらをコンソールにコピペして実行してみる。

gcc -I/mingw64/include/gimp-2.0 -I/mingw64/include/gdk-pixbuf-2.0 -I/mingw64/include -I/mingw64/include/glib-2.0 -I/mingw64/lib/glib-2.0/include -I/mingw64/include/libpng16 -I/mingw64/include/cairo -I/mingw64/include/lzo -I/mingw64/include/freetype2 -I/mingw64/include/harfbuzz -I/mingw64/include/pixman-1 -I/mingw64/include/gegl-0.4 -I/mingw64/include/gio-win32-2.0 -I/mingw64/include/json-glib-1.0 -I/mingw64/include/babl-0.1 -I/mingw64/include/gtk-2.0 -I/mingw64/lib/gtk-2.0/include -I/mingw64/include/pango-1.0 -I/mingw64/include/fribidi -I/mingw64/include/atk-1.0 -mms-bitfields  -o 'hello' 'hello.c'  -mwindows -L/mingw64/lib -lgimpui-2.0 -lgimpwidgets-2.0 -lgimpmodule-2.0 -lgimp-2.0 -lgimpmath-2.0 -lgimpconfig-2.0 -lgimpcolor-2.0 -lgimpbase-2.0 -lgegl-0.4 -lgegl-npd-0.4 -lm -lgmodule-2.0 -ljson-glib-1.0 -lbabl-0.1 -lgtk-win32-2.0 -lgdk-win32-2.0 -limm32 -lshell32 -lole32 -Wl,-luuid -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -lgdi32 -lmsimg32 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl

特別エラーは発生しない。
ファイルが出来上がっていないか念のため確認してみる。

ls
hello.c  hello.exe

なぜかhello.exeが出来上がっている。

多分実行しないと思われるが、Gmipのplug-insフォルダにコピーしGIMPを起動してみる。ただmingw64でインストールしたgimpは起動しないので、インストーラーでインストールしてあったGIMPのPlug-Insフォルダにコピー。

%Userprofile%\AppData\Roaming\GIMP\2.10\plug-ins

gimpを起動し「メニュー」→「フィルター」→「Misc」にHello woldのもじが表示されている。

適当な画像を作成すると「Hello wold」が活性化されるので押してみる。

エラーコンソールにHello,world!が表示されました。

色々すっきりしませんが、とりあえずソースファイルからGIMPのプラグインとして実行できるバイナリファイルになっていることが確認できました。

コメント