久しぶりに技術の仕事。
なんだかよくわからないプログラムを、HP-UXに移植してってことで、
サンプルのMakefileがあるから楽勝か、と思ったら、
HP-UX 11.00 & HP aC++ B3910B A.03.25
ではうまくいきませんでした。
makeは通っているのに実行時にこけちゃう。
/usr/lib/dld.sl: Unresolved symbol: xxxxx (code) from ./foo
IOT trap (core dumped)
で、調べてみると、
HP aC++バージョンA.03.50 リリースノートに以下のような記述がありました。
バージョンA.03.30の新機能
1.5.1 新しいRogue Wave SL 2.0をベースとしたC++標準ライブラリ2.0
新しい -AA コマンド行オプションによって、新しいC++標準ライブラリ2.0を使用できます。このライブラリは新しい標準準拠の(「テンプレート化された」) iostream ライブラリが含まれている最初のリリースです。ISO C++標準に準拠しています。(後略)
うーんと、Rogue Waveを使っているようなんで、
とりあえず新しいC++標準ライブラリを使っておくか、
と -AA オプションを追加してコンパイルしたら、今度はリンクエラー。
/usr/ccs/bin/ld: Can't find library for -lstd_v2
そうですかー。このコンパイラじゃだめってことですか…
というわけで、次は HP-UX 11.11 & HP aC++ B3910B A.03.37
でコンパイルに挑戦。そうしたら、今度は
error Tools.h++ 7.5.x has not been certified with this version of the aCC Compiler
なんていうエラーが出てしまいました。
短気な私はエラーメッセージを出している<rw/compiler.h>の
該当部分をコメントアウトしてしまいました。
#if defined(__HP_aCC ) && (__HP_aCC > 32700)
error Tools.h++ 7.5.x has not been certified with this version of the aCC Compiler
#endif
んー、このファイルは書き換えていいようなものではない気もするけど、
とりあえず動いたっぽいので、ちゃんとしたことは後から考えよう。
と思ったということを書き留めておかないとすぐ忘れそうなのでメモ。(笑)