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

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

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/

相关文章:

java - 小程序在安全阶段在 IE 中挂起

C++ 将 char 指针设置为 null

c++ - Boost.Test 和 CTest 没有为参数 color_output 提供参数

c++ - 我做错了什么?牡丹&QT&SHELL解密

c++ - Eclipse 中的 MinGW GCC 和 G++ 错误

java - Eclipse 语法突出显示 Java Struts Hibernate Web 应用程序

java - 在扩展 JPanel 的类中使用多个面板

java - Android Studio >> GetCount()

java - 如何使用基本 Gradle 项目正确引用资源?

java - 从 Spring Boot 2.0.2 更新到 Spring Boot 2.1.2 导致 No Qualifying bean of type 异常