一个典型的C程序会被编译、汇编、链接和加载。我知道Java使用JVM并生成字节码。是否可能使用链接器连接两个“目标文件”?例如,通过调整链接器并链接两个目标文件,可以将C程序和C++程序一起使用。
那么在C和Java之间是否也能做到这一点呢?
一个典型的C程序会被编译、汇编、链接和加载。我知道Java使用JVM并生成字节码。是否可能使用链接器连接两个“目标文件”?例如,通过调整链接器并链接两个目标文件,可以将C程序和C++程序一起使用。
那么在C和Java之间是否也能做到这一点呢?
你不能直接将编译后的C代码与编译后的Java代码链接。
你可以使用Java本地接口(JNI)从Java中调用已编译的C或C++代码:
Java本地接口(JNI)使得Java编程语言中编写的代码能够与其他语言(如C和C++)编写的代码集成。它允许程序员充分利用Java平台,而无需放弃对旧代码的投资。
如果将C代码编译为JVM字节码而不是本地代码,那么可能会实现这一点,因此您将在JVM级别上进行“链接”,而不是通过本地对象链接器。
请参见http://en.wikipedia.org/wiki/Java_virtual_machine#C_to_bytecode_compilers
javac
生成的“目标文件”(非正式称为“字节码”)是程序在堆栈机器上的硬件无关表示形式(与旧的"P-Code"系统所用的形式并没有太大区别)。gcj
将其编译为可执行的汇编代码。