【发布时间】:2015-10-29 15:33:04
【问题描述】:
我有一个makefile,其中一个层次结构相当高的Java类依赖于大量其他类。我的基本问题是我能做到以下几点:
$(bigClass).class: $(smallOne).class ... $(lastSmallOne).class $(bigClass).java
javac bigClass.java smallOne.java ... lastSmallOne.java
它仍然是最佳的。 javac 会为我处理这一切吗?还是我需要通过 gcc 和 c 代码之类的链接详细信息?换句话说,如果只有其中一个没有更新,javac 会发现“哦……好吧……我需要做的就是在这里编译这个然后重新链接”?如果不是,那么简单语句“gcc -o object1.o object2.o”的 javac 等效项是什么?
【问题讨论】:
-
Java 中没有链接步骤。您永远不会将字节码转换为可执行文件,而是将其交给 Java 虚拟机,该虚拟机进行即时编译以实际运行它。
-
使用
make构建Java - 你似乎有某种自虐倾向...... -
@azurefrog - 有一个链接步骤,但它会在您运行 Java 字节码时自动发生,它可能会或可能不会由 VM 编译。
-
@AndyThomas 好吧,动态链接确实在执行期间发生,但是这个问题专门询问在编译期间将程序链接在一起。我想我应该更具体地说“在 Java 中没有链接执行之前”。
标签: java compilation linker