Eclipse 项目提供 installers for Linux .这些安装程序(或已安装的可执行文件)是否包含任何已编译的 C++ 代码?如果是,Eclipse 如何避免 C++ ABI 兼容性问题?
我认为 Eclipse 的本地库(如 SWT )必须全部用 C 编写。(现在让我们忽略 Windows。)在查看 SWT 的源代码时,我注意到 XPCOM-related code是用 C++ 编写的。
那么有什么技巧呢?如果我从安装程序安装 Eclipse,我会得到这些东西吗?如果是这样,无论我的机器上有哪个 C++ 运行时,它都可以工作吗?如果是这样,“他们”是如何做到的?
(抢先解决花生画廊:我意识到我可以只使用包管理器来安装 Eclipse。我问的是程序不是专门为我的机器量身定制的情况。)
我注意到 SWT FAQ explains , “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++ 运行时……好吧,你现在可能明白了。
(感谢阅读所有这些。)
最佳答案
我的猜测是,当他们构建它时,他们将 c++ 标准库静态链接到应用程序中(或在安装程序期间提供他们自己的动态库拷贝)然后 glibc 是唯一的其他动态库,这更容易处理与(尽管仍然存在与之相关的挑战)。
您可以测试它的一种方法是安装包(在 linux 上)然后针对可执行文件运行 ldd 实用程序并查看它链接的内容。
关于java - Eclipse 是否必须处理 C++ ABI 兼容性问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8761828/