2012-01-06 10 views
1

Eclipseプロジェクトはinstallers for Linuxです。これらのインストーラ(またはインストールされている実行可能ファイル)にコンパイルされたC++コードが含まれていますか?もしそうなら、EclipseはC++のABI互換性の問題をどのように回避しますか?EclipseはC++のABI互換性の問題に対処しなければなりませんか?

Eclipseのネイティブライブラリ(SWTなど)はすべてC言語で書かれている必要があります(今はWindowsを無視してください)。SWTのソースを見て、XPCOM-related codeはC++で書かれています。

だからトリックは何ですか?インストーラからEclipseをインストールした場合、これを入手できますか?もしそうなら、私のマシン上でどのC++ランタイムが使用されているかに関係なく動作しますか?もしそうなら、「彼ら」はどうやってそれをしますか?

(先制ピーナッツギャラリーに対処するために:。。私はちょうどEclipseをインストールするには、パッケージマネージャを使用することができます実現し、私はプログラムを具体的に私のマシンに合わせて調整されていない場合について聞いてるのよ)

I 「SWTはJNIを使​​用してオペレーティングシステムのネイティブウィジェットとやりとりしますSWT JNIライブラリは、ウィンドウシステム、オペレーティングシステム、およびハードウェアアーキテクチャのためにコンパイルする必要があります。

私は、「Eclipseは、Linux用のワンサイズ対応のインストーラをどのようにして作れますか?もしこれらのインストーラを使ってみたら、すべてが明確になるかもしれません。

JNIを使​​っているJavaプロジェクトがC++ ABI互換性をどのように扱っているかを理解しようとしています。問題。私は数日前に同様の質問をしましたが、まだ多くは聞いていませんでした(Is the Java Native Interface (JNI) affected by C++ ABI compatibility issues?)。私は、Eclipseの専門家が私にいくつかの指針を与えることができると考えました。Eclipseは同様の問題に対処しなければならないかもしれないからです。

Javaのプロセスは基本的にC++ライブラリを使用できないようです。 JavaプロセスにはC++ランタイムが必要です。共有ライブラリに互換性のないC++ランタイムが必要な場合は...おそらく、今考えていると思います。

(これのすべてを読んでくれてありがとう。)

+0

C++ ABI **はWindowsでも悪夢です(MSVCの異なるバージョン、デバッグとリリースの問題、イテレータデバッグのような奇妙なフラグ)。ランタイムバージョンもあります。 –

+0

アレクサンドル:良い点。私は "C + +のABI互換性はそのプラットフォーム上の問題ではないので、今はWindowsを無視しよう"と変更する予定です。単純に「今はWindowsを無視しよう」 –

+0

誰もがC++移植性を持たせるのと同じ方法でしょう:エクスポートされた関数ごとに 'extern" C "'? AfaikあなたはJNIからC++関数を呼び出すことはできません(私は正確にABIの理由を言っていますが、誰が知っているのでしょうか?)ので、C関数を既に使用しなければならないという副作用があります。 – Voo

答えて

0

私の推測では、彼らはそれを構築するとき、彼らは静的(インストーラで中または動的ライブラリの独自のコピーを提供)アプリケーションにC++標準ライブラリをリンクするものですglibcは他のダイナミックライブラリーであり、対処が簡単です(それに関連する問題はまだありますが)。

これをテストする方法の1つは、パッケージを(Linux上に)インストールし、実行可能ファイルに対してlddユーティリティを実行し、それがリンクしているものを確認することです。

関連する問題