Re: Gcc 2 and Gcc 3 in Zeta OS
高津@ドーガです。
さらに fj.comp.lang.c++ にもふります。
記事 <c1h6q9$qd5$1@aribaba.minolta.co.jp> で
Kawabata Kazuyukiさんは書きました
> > Zeta では gcc-3 系が載っているそうですが、3 と 2 ではバイ
> > ナリ互換がないという話を聞きます。いったいどうやっているの
> > でしょうか?
うろ覚えですが、Zeta の API って C++ で書かれてましたよね。
gcc の 2 と 3 では、関数名の mangling 規則が変わってます。ですから、
C++ なコードをコンパイルした場合、シンボル名に互換性が無いので
そのままでは混在させて link できないですね。
(C++でコンパイルした場合、オブジェクトレベル(.o)で互換性が無い。
ダイナミックリンクの場合には、実行ファイルレベルでも互換性が無くなる)
以下は想像ですが、対策としては
・gcc3 の方では、mangling 規則をgcc2に合わせる
(-fname-mangling-version-0 をつける)
・API のライブラリの方に wrapper を用意していて、gcc2 と gcc3 の
どちらの mangling 規則でも link 出来るようにしている
のどちらかだと思います。
PROJECT TEAM DoGA 高津正道 taka2@doga.jp
TBD00456@nifty.ne.jp
PROJECT TEAM DoGAのホームページ → http://doga.jp/
2月26日(木) 今日のマーフィーの法則 [コリンズの学会の原理]
もっとも単調な声の持ち主が食事のあとにスピーチをする。
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