Google グループは Usenet の新規の投稿と購読のサポートを終了しました。過去のコンテンツは引き続き閲覧できます。
表示しない

Zeta

閲覧: 3 回
最初の未読メッセージにスキップ

Kawabata Kazuyuki

未読、
2004/02/24 23:03:212004/02/24
To:
川端です。

Zeta の話題ってここでいいんでしょうか?

Zeta では gcc-3 系が載っているそうですが、3 と 2 ではバイナリ互換がない
という話を聞きます。
いったいどうやっているのでしょうか?

R5 用バイナリは実行できるけど、R5 用にビルドできないということでしょうか?

また、R5 や Dano で動作する gcc-3 はないんでしょうか?
--
川端一之
E-mail:k-k...@tdc.konicaminolta.jp

Yasushi Shinjo

未読、
2004/02/25 7:13:392004/02/25
To:
新城@筑波大学情報です。こんにちは。

In article <c1h6q9$qd5$1...@aribaba.minolta.co.jp>
Kawabata Kazuyuki <k-k...@tdc.konicaminolta.jp> writes:
> Zeta の話題ってここでいいんでしょうか?

はい。Zeta の話は、fj.os.beos でいいと思います。gcc 関連とい
うことで、fj.comp.lang.c にも振りました。

> Zeta では gcc-3 系が載っているそうですが、3 と 2 ではバイ
> ナリ互換がないという話を聞きます。いったいどうやっているの
> でしょうか?

Zeta の話はよくわからないので、一般話として。

コンパイラで互換というと、引数の受け渡し方が変更されたという
ことですかね。あるいは、オブジェクト・コード(.o) の形式が変
更されたか。

最近、インテルのCコンパイラが gcc 互換になったと聞いた
(Linuxのカーネルもコンパイルできるようになった)というのは、
この引数の渡し方などを統一したということですか?

> R5 用バイナリは実行できるけど、R5 用にビルドできないということでしょうか?

動的リンクを使っていれば、問題が起きるかもしれません。普通は
昔のライブラリも入れて置くなどするので平気なんでしょうけれど。
Solaris なんかいまだに SunOS のバイナリ動いたりしますし。

> また、R5 や Dano で動作する gcc-3 はないんでしょうか?

ソース持ってきて configure して make したら、動かすだけなら
動くんんじゃないですか。ただ、そうして configure した結果と
OS標準のものが一致するかどうかは別の話なので、実際問題困る
かもしれません。

この間、OpenSSL 0.9.7c を使おうかとおもって Solaris のバイナ
リを見たらlibgcc_s.so.1 がいるから gcc 3 が居ると書いてあり
ました。でも実際にソースからコンパイルしたら、別に gcc 2 で
もコンパイルできました。そんなものかもしれません。

ところで、libgcc_s.so.1 って何なんでしょうか?

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\

Masamichi Takatsu

未読、
2004/02/25 20:35:452004/02/25
To:
高津@ドーガです。

さらに 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 高津正道 ta...@doga.jp
TBD0...@nifty.ne.jp
PROJECT TEAM DoGAのホームページ → http://doga.jp/
2月26日(木) 今日のマーフィーの法則 [コリンズの学会の原理]
もっとも単調な声の持ち主が食事のあとにスピーチをする。

Kawabata Kazuyuki

未読、
2004/02/26 23:05:112004/02/26
To:
川端です。

<0402261035...@XP.doga.jp>の記事において
ta...@doga.jpさんは書きました。

>> うろ覚えですが、Zeta の API って C++ で書かれてましたよね。

そうです。
C++ でなければ GUI のプログラムは作れません。

>> 以下は想像ですが、対策としては
>> ・gcc3 の方では、mangling 規則をgcc2に合わせる
>> (-fname-mangling-version-0 をつける)

試しに cygwin の gcc version 3.3.1 (cygming special) でやってみると、
cc1plus: warning: switch "-fname-mangling-version-0" is no longer supported
と表示されました。
作成されるオブジェクトはオプションの有無で変わりはありませんでした。
(cygwinだからでしょうか?)
# ソースを検索しても有効な処理がなさそう?

>> ・API のライブラリの方に wrapper を用意していて、gcc2 と gcc3 の
>> どちらの mangling 規則でも link 出来るようにしている
>> のどちらかだと思います。

というわけでこっちなんでしょうか。
# R5 でがんばらずに素直に Zeta 買えってことかな…。
--
川端一之
E-mail:k-k...@tdc.konicaminolta.jp

Hiroshi Fujishima

未読、
2004/02/27 4:49:052004/02/27
To:
y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:

> この間、OpenSSL 0.9.7c を使おうかとおもって Solaris のバイナ
> リを見たらlibgcc_s.so.1 がいるから gcc 3 が居ると書いてあり
> ました。でも実際にソースからコンパイルしたら、別に gcc 2 で
> もコンパイルできました。そんなものかもしれません。

コンパイル時に gcc-3 が必要という意味ではなく、実行時に必要ということです。

> ところで、libgcc_s.so.1 って何なんでしょうか?

shared object に必要とされている shared object みたいです。

% dump -Lv libstdc++.so

libstdc++.so:

**** DYNAMIC SECTION INFORMATION ****
.dynamic:
[INDEX] Tag Value
[1] NEEDED libm.so.1
[2] NEEDED libgcc_s.so.1
[3] NEEDED libc.so.1
[4] INIT 0x2d310
[5] FINI 0x2d32c
[6] SONAME libstdc++.so.5

[...]

% dump -Lv libg2c.so

libg2c.so:

**** DYNAMIC SECTION INFORMATION ****
.dynamic:
[INDEX] Tag Value
[1] NEEDED libm.so.1
[2] NEEDED libc.so.1
[3] NEEDED libgcc_s.so.1
[4] INIT 0x63a4
[5] FINI 0x63c0
[6] SONAME libg2c.so.0

--
Hiroshi Fujishima

新着メール 0 件