首页 文章

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

提问于
浏览
1

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

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

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

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

我注意到SWT FAQ explains,"SWT uses JNI to interact with the native widgets in the operating system. The SWT JNI libraries must be compiled for the windowing system, operating system and hardware architecture of interest."

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

我还没听说过(Is the Java Native Interface (JNI) affected by C++ ABI compatibility issues?) . 我认为Eclipse专家可能能够给我一些指导,因为Eclipse可能必须处理类似的问题 .

需要明确的是:似乎Java进程基本上不能使用C库 . Java进程需要C运行时 . 如果共享库需要不兼容的C运行时......那么,您现在可能已经明白了 .

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

1 回答

  • 0

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

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

相关问题