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 [あと必要なオプション]

でよろしい。


いちおうこれでコンパイル完了。少なくともクライアントは動作しているようす。