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のプラグインとして実行できるバイナリファイルになっていることが確認できました。
コメント