Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javac是如何编译成可执行文件的?_Java_Javac - Fatal编程技术网

Javac是如何编译成可执行文件的?

Javac是如何编译成可执行文件的?,java,javac,Java,Javac,Javac本身是用Java编写的,但在下载JDK时,它是作为可执行文件提供的。使用什么工具将Javac的Java源代码编译成可执行文件?JDK,通常是您正在构建的JDK的N-1版本,以及C/C++编译器。至少对于OpenJDK来说,Oracle提供的支持是在Linux、macOS和Windows上。此外,SAP使用维护AIX构建。Graal编译器应该这样做,但它基本上在可执行文件中包含JVM的精简版本,这与Javac不同,我认为任何自尊心强的编译器都可以自行编译。因为Javac是用Java编写的

Javac
本身是用Java编写的,但在下载
JDK
时,它是作为可执行文件提供的。使用什么工具将
Javac
的Java源代码编译成可执行文件?

JDK,通常是您正在构建的JDK的N-1版本,以及C/C++编译器。至少对于OpenJDK来说,Oracle提供的支持是在Linux、macOS和Windows上。此外,SAP使用维护AIX构建。

Graal编译器应该这样做,但它基本上在可执行文件中包含JVM的精简版本,这与
Javac
不同,我认为任何自尊心强的编译器都可以自行编译。因为Javac是用Java编写的,所以您应该能够使用Javac编译Javac源代码。@RobertHarvey,我相信只有当Javac将源代码编译成机器代码时才是这样,但事实并非如此。它将它们编译成字节码。。。是的,它可以将自己编译成字节码,但是我们如何得到机器码呢?我想,就像你得到任何其他Java可执行文件的机器码一样:使用JIT。谢谢!你有关于我如何自己编译它的更多信息吗?bootjdk链接是一个循序渐进的指南。请注意,虽然在Linux上构建非常简单,但在Windows上构建非常困难,请遵循链接中提到的每一步,在macOS上,如果Xcode版本不同,您将最终与操作系统发生冲突。另外,SSD帮助很大。谢谢!知道了!