OpenPBSのコンパイル
全く困憊瑠なわけだが、Fedora Core 6でOpenPBSのコンパイルに挑戦してみた。致命的な問題はないのだが、バックワードコンパチビリティを如何に確保するか、というのが課題になる。いくつかの問題があるので一つづつ潰していこう。
dependencyの問題
Debian 3.1でも発生していたのだが、dependファイルを作る時のオプションが重要になってくる。-MMをつけるのだが、付ける場所が難しい。ソースを展開した後のbuildutils/mkincludes/tail.mk.inの中ほど。CCが使われている。ここに-MMを追加する。
コンパイラの選択
gcc4では「配列の型が不完全要素型を持っています」というエラーがでる。解決方法は古いコンパイラを使うこと。Fedora Core 6ではgcc34がサポートされている。compat-gcc34のようなものをインストールしておく。なぜかconfigure実行時に設定ができないので、buildutils/mkincludes/head.mk.inの中で決め打ちにする。
リンク時の問題
usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in
というエラーが出る。解決方法はコンパイル時に--include /usr/include/errno.hを指定すればよい。こちらはconfigure時でよいようなので、
CFLAGS="-g -O2 --include /usr/include/errno.h" ./configure [あと必要なオプション]
でよろしい。
いちおうこれでコンパイル完了。少なくともクライアントは動作しているようす。