省型旧形国電の残影を求めて

戦前型旧形国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

ARTをコンパイルしてバージョンアップしようとしてみたら... (Ubuntu)

f:id:yasuo_ssi:20210904211415j:plain

 Ubuntu 20.04 を入れていたマシンですが、8月に 22.04 にアップデートしますか、という表示が出て、果たしてアップデートして大丈夫だろうかとしばらく迷っていましたが、えいやっ、とアップデートしてしまいました。すると予想通り Wayland では ART は動かず仕舞い... ART のバイナリーでは Wayland はサポートしませんよ、と言われていたので当然ですし、また Xorg に切り替えるのも簡単なので、そのまま Xorg で使っていました。

 しかし、自分でコンパイルすれば Wayland でも動く、と書かれていましたし、それも検証してみるかと、ARTが、1.16にバージョンアップしたのを機会にコンパイルしてみたところ、以下のようなエラーが出て全くコンパイルできません。今まであっさりコンパイルできていたのに...

---------------

/usr/include/atkmm-1.6/atkmm/component.h:5:10: fatal error: atkmmconfig.h: そのようなファイルやディレクトリはありません
    5 | #include <atkmmconfig.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.

---------------

 何なのかと思ってネットを検索してみましたが、日本語では有効な情報はなく、英語の情報を調べてみると、ARTではありませんが、どうもライブラリのダブりがあって、それが適切に指定できていないからではないか、というような情報がありました。とりあえず、

pkg-config --cflags atkmm-1.6

と、コマンドを入れると、ダブっているライブラリが出るので、最後が include で終わるライブラリに、コンパイル設定ファイル上でパスを入れろ、みたいなアドバイスが載っていましたので、とりあえず上のコマンドを入れると、たしかに複数のライブラリがあるようです。

上のコマンドの実行結果

 そして /usr/include/atkmm-1.6 の下には、確かに atkmmconfig.h がありませんが、/usr/lib/x86_64-linux-gnu/atkmm-1.6/include の下にはあります。つまり、/usr/lib/x86_64-linux-gnu/atkmm-1.6/includeの代わりに、/usr/include/atkmm-1.6 を見に行くことが問題なようです。

 そこで、ARTのソースコードを git で pull してきましたが*1Linux の若葉マークの筆者は、どこで設定したらよいのやらさっぱり分かりません。少なくとも build-art には、atkmm-1.6 を直接指定する記述はなさそうです。1月ほど放置していましたが、どうも気になって、1.16.3にアップデートされたのを機に、またコンパイルしてみました。

 

 とりあえずムダに何度かコンパイルを繰り返すうちにふと気づきました。ソースコードを一旦ローカルにダウンロードしているはずなのに、エラーメッセージは、ダウンロードしたディレクトリではない場所にあるソースファイルを指示しています。で良く動作を観察してみると、ダウンロードしたディレクトリから ./build-art を実行しても、一旦 ~/programs/code-art にソースコードをコピーしてコンパイルしているようです。つまり予めソースコードをダウンロードしようが、コンパイル時に直接サイトからソースコードを引っ張ってこようが、最終的にローカルでは同じところ (~/programs/code-art ) からソースコードを読んでコンパイルしている...

 ... ということは、ひょっとして前のバージョンをコンパイルしたときに、要らない書き換えられないファイルがあってそれが悪さをしているのでは... と思って、一旦 code-art ディレクトリを削除して、コンパイルをやり直してみると、ビンゴでした。つまり、バージョンアップ前と、バージョンアップ後で、読み込むライブラリが変更になったのに、おそらく前からあって、上書きされない何かのソースコードファイルのせいで、新バージョンでは使われない、存在しないファイルに対し、コンパイル過程で、検索を掛けるため、エラーメッセージが出てしまったようでした。

 ちなみにソースコードを変更しないでコンパイルするなら、build-art にソースコードの pull まで指定されていますので、事前にローカルコンピュータにソースコードをpull (ダウンロード) しておく必要はないということです。

 これで、のどに刺さったとげが取れたようにすっきりしました。

 因みに、Ubuntu 22.04 上で ART をソースコードからコンパイルすると、WaylandでもXorgでも全く問題なく動きます。ともあれ懸案が解決し、すっきりしました。

----------------

ARTをUbuntu上でコンパイルする方法

yasuo-ssi.hatenablog.com

関連しそうなサイト

qiita.com

www.fecorp.co.jp

goutou.mamagoto.com

 

*1:参考サイト

forum.artherapee.fr