当前位置: 首页 > 面试题库 >

1.7的Javac交叉编译

蓝鸿哲
2023-03-14
问题内容

各位

我正在尝试在Ant和终端上玩Javac Cross编译。在本地和集成环境中,我在一个非常基本的问题上遇到了同样的问题。

我在linux终端(以及在Windows和cmd的cygwin上)上运行此命令:

 javac -target 1.6 -source 1.7 -bootclasspath /usr/java/jdk1.6.0_27/jre/lib/rt.jar Main.java

与Main.java一起使用,仅是System.out.println。

javac -version ==> javac 1.7.0_11

我收到错误消息:

javac: source release 1.7 requires target release 1.7

我在本地Windows机器上的配置大致相同,结果完全相同。

我的理解是,交叉编译就是使用较高版本的jdk编译与较高版本的jdk兼容的某些源代码,但是传递目标版本的rt.jar(据说较低)。

如果目标和源相同,则它起作用。

target=1.7 and source=1.7 workd fine

target=1.6 and source=1.6 worked just fine

但是我想交叉编译,所以我做错了什么?

感谢您能提供的所有帮助,并在此先感谢。


问题答案:

您不能具有较新版本的源和较低版本的目标。例如,在Java 5中,该语言已添加了许多新功能,例如泛型,自动装箱,并且您不能指望JVM
1.4能够理解它。因此,您必须告诉编译器您的源代码是Java 1.4源代码。这说明了您得到的结果。

-target的默认值取决于-source的值:

  • 如果未指定-source,则-target的值为1.7
  • 如果-source为1.2,则-target的值为1.4
  • 如果-source为1.3,则-target的值为1.4
  • 如果-source为1.5,则-target的值为1.7
  • 如果-source为1.6,则-target的值为1.7
  • 对于-source的所有其他值,-target的值是-source的值。

有关更多信息,请参考http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html



 类似资料:
  • 所以伙计们, 我试图玩一点Javac交叉编译与蚂蚁和终端。本地和集成环境,我有同样的问题,非常基本的问题。 我在linux终端(以及windows和cmd上的cygwin)上运行此命令: Main.java只有System.out.println. 我收到了错误信息: 我在本地windows计算机上的配置大致相同,结果完全相同。 我的理解是,交叉编译就是使用更高版本的jdk编译一些与更高版本的jd

  • 我已经在Mac OS X上安装了JDK 1.8.0_25。当尝试编译Java8源代码时,它会抱怨: 编辑3:正如@dan所建议的,是否所有javac都是指向单个javac的符号链接?不,原来没有符号链接:

  • 我试图交叉编译一个linux系统的简单hello world程序。 我有以下资料: null 我试图运行/lib/libc.so.0来获取版本信息,但出现了一个分段错误。它似乎用-static编译解决了这个问题。所以我想这是libc库的问题。谢谢你的帮助。

  • 问题内容: 我创建了一个交叉编译的arm可执行文件。我想找到可执行文件的库依赖项。我正在使用ubuntu natty并安装了不包含ldd的arm-linux- gnueabi工具链。有没有可用的工具来查看Linux中arm可执行文件库的依赖性。 问题答案: 这有点儿混乱,但这是我能找到的最好的解决方案,对于基本用途它确实很好用-只需使用其他交叉工具将此脚本另存为“ arm-none-linux-g

  • 我在、Visual C++和交叉编译器的帮助下为构建项目。它运行良好,但如何处理情况时,我需要链接到库?我是否应该用当前的交叉编译器构建所有必需的库?例如如何处理库?

  • 本文档说明如何在kali linux上配置ARM交叉编译环境,是我们多份关于”定制ARM镜像”的文档的起点. 开发机的配置 编译内核生成镜象通常需要大量硬盘空间.确保你的开发机至少有50G可用硬盘空间以及足够的内存,CPU不要太差. 安装依赖 先安装ARM交叉编译所需的依赖. apt-get install git-core gnupg flex bison gperf libesd0-dev b