Re: brandelf?
以下, 間違ってたら指摘してください.
package とかでない gcc をソースコードから /usr/local/bin/* 辺りへイン
ストールする場合, 次のような手順を踏むと思います.
1) システムの cc (または gcc) で最適化をオフにして stage1 コンパイラ
を作る.
2) stage1 コンパイラで適当に最適化して stage2 コンパイラを作る.
3) 2 と同じコンパイルオプションで stage2 コンパイラを使って stage3
コンパイラを作る.
4) stage2/stage3 コンパイラを比較して同じならインストール.
ここでシステムの cc のバージョンが違えば (たとえ同じ最適化オプションを
選んだとしても) stage1 コンパイラは stage2/stage3 コンパイラと異なるも
のになるはずです.
で, UPDATES にある方法だと思い切りこれを端折っちゃってる気がするんです
けど. 先の gperf が動作しなかったのは, 古いコンパイラでコンパイルした
ライブラリを使っていたのが原因のようです (brandelf も同じかも).
gperf は buildworld にも用いられるので以降同じ環境で buildworld も通ら
なくなりますが, この状態で /usr/obj/* にある gperf は動作します. つま
り
古いコンパイラでコンパイルした古い gperf
古いコンパイラでコンパイルした新しい gperf (動作しない)
新しいコンパイラでコンパイルした新しい gperf
てなことになって普通にインストールされるのは二番目になっちゃうような.
このことが
The only fix is to rebuild the application and any C++
libraries used.
なんでしょうけど, これって C++ に限らずもう一度やっておかないと最悪シ
ステムの挙動が直前のシステムのコンパイラのバージョンに依存しちゃいます
よね?
--
Kazuo Fox Dohzono / dohzono@hf.rim.or.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735