1

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

Eclipse のネイティブ ライブラリ ( SWTなど) はすべて C で作成する必要があると考えました (ここでは Windows は無視します)。SWT のソースを調べているときに、 XPCOM 関連のコードが C++ で作成されていることに気付きました。

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

(先制的にピーナッツ ギャラリーに対処するには: パッケージ マネージャーを使用して Eclipse をインストールするだけでよいことに気付きました。プログラムが私のマシン用に特別に調整されていない場合について質問しています。)

SWT の FAQで、「SWT は JNI を使用して、オペレーティング システムのネイティブ ウィジェットと対話します。SWT JNI ライブラリは、対象のウィンドウ システム、オペレーティング システム、およびハードウェア アーキテクチャ用にコンパイルする必要があります。」と説明していることに気付きました。

「では、Eclipse はどのようにして Linux 用のフリーサイズのインストーラーを作成できるのでしょうか?」(たぶん、これらのインストーラーのいずれかを使用してみれば、すべてが明らかになるでしょう。しかし、場合によっては、より良い人に聞いたほうがよい場合もあります。)

JNI を使用する Java プロジェクトが C++ ABI の互換性の問題にどのように対処するかを理解しようとしています。数日前に同様の質問をしましたが、まだあまり聞いていません ( Java Native Interface (JNI) は C++ ABI 互換性の問題の影響を受けますか? )。Eclipse は同様の問題に対処しなければならない可能性があるため、Eclipse の専門家が何らかのガイダンスを提供してくれるかもしれないと考えました。

明確にするために: Java プロセスは基本的に C++ ライブラリを使用できないようです。Java プロセスには C++ ランタイムが必要です。共有ライブラリに互換性のない C++ ランタイムが必要な場合は、おそらくもうおわかりでしょう。

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

4

1 に答える 1

0

私の推測では、彼らがそれをビルドするときに、C++ 標準ライブラリをアプリケーションに静的にリンクします (または、インストーラーで動的ライブラリの独自のコピーを提供します)。その後、glibc は他の唯一の動的ライブラリであり、扱いが簡単です (ただし、それに関連する課題がまだあります)。

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

于 2012-01-06T17:49:19.700 に答える