Eclipse是否必须处理C ++ ABI兼容性问题?

时间:2012-01-06 17:26:07

标签: java c++ eclipse java-native-interface abi

Eclipse项目提供installers for Linux。这些安装程序(或已安装的可执行文件)是否包含任何已编译的C ++代码?如果是这样,Eclipse如何避免C ++ ABI兼容性问题?

我认为Eclipse的本机库(如SWT)必须全部用C语言编写。(现在让我们忽略Windows。)在查看SWT的源代码时,我注意到{{3} }是用C ++编写的。

那么诀窍是什么?如果我从安装程序安装Eclipse,我会得到这些东西吗?如果是这样,无论我的机器上有哪个C ++运行时,它都能正常工作吗?如果是这样,“他们”怎么做呢?

(为了抢先解决花生画廊问题:我意识到我可以使用软件包管理器来安装Eclipse。我问的是程序不是专为我的机器量身定制的情况。)

我注意到XPCOM-related code,“SWT使用JNI与操作系统中的本机小部件进行交互。必须针对感兴趣的窗口系统,操作系统和硬件架构编译SWT JNI库。” / p>

这让我想到,“那么Eclipse如何能够为Linux制作一个通用的安装程序?” (也许如果我只是尝试使用其中一个安装程序,一切都会变得清晰。但有时最好只问问你的好人。)

我试图理解使用JNI的Java项目如何处理C ++ ABI兼容性问题。我几天前问了一个类似的问题,但还没有听到太多(SWT FAQ explains)。我认为Eclipse专家可能能给我一些指导,因为Eclipse可能必须处理类似的问题。

只是要清楚:似乎Java进程基本上不能使用C ++库。 Java进程需要C ++运行时。如果共享库需要不兼容的C ++运行时......那么,你现在可能已经明白了这个想法。

(感谢您阅读所有这些内容。)

1 个答案:

答案 0 :(得分:0)

我的猜测是,当他们构建它时,他们将c ++标准库静态链接到应用程序中(或者在安装程序期间提供他们自己的动态库副本)然后glibc是唯一的其他动态库,这更容易处理(虽然仍然存在与之相关的挑战)。

您可以测试这种方法的一种方法是安装软件包(在Linux上),然后针对可执行文件运行ldd实用程序,并查看它链接的内容。