`
KindAzrael
  • 浏览: 16347 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Linux 下编译 OpenJDK7 包括JVM和JDK API

阅读更多
1.首先去 这里 http://download.java.net/openjdk/jdk7/ 下载OpenJDK7的源码zip包

2. 简要介绍下OpenJDK7中的目录
    hotspot: 放有OpenJDK Hotspot Virtual Machine 的源代码和make文件
    langtools: 放有OpenJDK 的javac 等工具的源代码和make文件
    cobra: 放有OpenJDK Cobra 的源代码和make文件
    jaxws: 放有OpenJDK JAXWS 的相关信息和make文件, 具体的源代码再编译时会下载
    jaxp: 放有OpenJDK JAXP 相关信息和make文件,具体的源代码再编译时会下载
    jdk: 放有OpenJDK runtime libraries 的源代码和make文件
    直接OpenJDK 目录下有整个OpenJDK 的make文件

3. 检查系统的工具版本,以下配置基于OpenJDK7
    3.1 GNU make 3.81或更高版本
    3.2 ANT 1.7.1或更高版本
    3.3 Sun 的BootstrapJDK6 update14或更高版本(虽然有些奇怪,但是因为编译这些Java代码需要一个可用的JDK)
    3.4 GNU gcc 4.3或更高版本
    3.5 ZIP 2.2或更高版本
    3.6 FreeType 2.3或更高版本 (下载地址http://download.savannah.gnu.org/releases/freetype/  ,下载后解压)
    3.7 Advanced Linux Sound Architecture(ALSA) 0.9.1或更高版本(下载地址http://www.alsa-project.org/main/index.php/Download)

4. 如果怕麻烦可以使用相关命令来安装依赖包
    Fedora: yum-builddep java-1.6.0-openjdk
    Debian:  aptitude build-dep openjdk-6
  Ubuntu: sudo aptitude build-dep openjdk-6
  其它具体的可以参考OpenJDK中的README-builds.html

5. 环境工具设置好后了运行以下命令以设置或取消环境变量
    export LANG=C
    export ALT_BOOTDIR=/usr/java/jdk1.6.0_30/
    export ALLOW_DOWNLOADS=true
    export USE_PRECOMPILED_HEADER=true
    export SKIP_DEBUG_BUILD=false
    export SKIP_FASTDEBUG_BUILD=true
    export DEBUG_NAME=debug
    unset CLASSPATH
    unset JAVA_HOME

6. 到OpenJDK目录下运行 make sanity 进行检测 如果输出如下证明OpenJDK 编译环境检测没有问题
       PREVIOUS_RELEASE_IMAGE = 
          ALT_PREVIOUS_RELEASE_IMAGE = 
       Sanity check passed.
      如果是下面这样证明 环境依然有问题, 按照提示的WARNING 和 ERROR进行修改 直到检测通过
      ERROR: Your JAVA_HOME environment variable is set.  This will 
              most likely cause the build to fail.  Please unset it 
               and start your build again. 
       Exiting because of the above error(s). 
 
       make: *** [post-sanity] Error 1

7. 检测通过了在OpenJDK目录下运行
  make clean
  make

8. 注意事项
  8.1 保持所有命令是在同一个用户下运行的而且这个用户么还有JAVA_HOME 等环境变量
      这样编译程序才能正确的找到环境变量和不会有权限冲突
  8.2 OpenJDK 编译可能需要些时间,不要慌张
  8.3 要有ALLOW_DOWNLOADS=true。否则编译jaxp的时候会出错,因为jaxp的源代码是临时下载的
  8.3 OpenJDK 目录下的README-builds.html网页文档可以提供很多帮助.

9. 编译完成
  -- Build times ----------
  Target debug_build
  Start 2012-02-18 21:09:17
  End   2012-02-18 21:54:06
  00:01:04 corba
  00:20:53 hotspot
  00:03:57 jaxp
  00:04:14 jaxws
  00:14:15 jdk
  00:00:26 langtools
  00:44:49 TOTAL
  在OpenJDK目录下有个build文件夹是编译的output文件夹
  azrael@ubuntu:~/Tech/openjdk$ cd build/
  azrael@ubuntu:~/Tech/openjdk/build$ ll
  total 16
  drwxr-xr-x  4 azrael azrael 4096 Feb 18 20:37 ./
  drwxr-xr-x 12 azrael azrael 4096 Feb 18 20:35 ../
  drwxr-xr-x 27 azrael azrael 4096 Feb 18 21:53 linux-i586/
  drwxr-xr-x 26 azrael azrael 4096 Feb 18 21:08 linux-i586-debug/
  azrael@ubuntu:~/Tech/openjdk/build/linux-i586/bin$ ./java -version
  openjdk version "1.7.0-internal-debug"
  OpenJDK Runtime Environment (build 1.7.0-internal-debug-azrael_2012_02_18_20_37-b00)
  OpenJDK Server VM (build 21.0-b17-jvmg, mixed mode)

1
0
分享到:
评论

相关推荐

    openjdk 7u源码(2)

    openjdk 7u的源码,可以用来编译jvm(已编译成功),深入理解java虚拟机。由于资源上传限制,7u和6两个源码压缩为3个分卷,请下载3个分卷放在同一文件夹中再解压。自用资源,放心下载。

    Open-JDK-13:编译出的OpenJDK-13 JVM内核分析

    1系统环境 Xcode Oracle JDK:13 先确保系统已安装freetype和ccache 自由类型:2.9 ccache:3.3.5 $ brew install freetype ccache ...-- with - jvm - variants = server 编译server类型JVM -- wi

    openjdk7源码

    完整的openjdk7源码,可配合boot jdk6进行源码编译,亲测可用

    openjdk12源码.zip

    https://hg.openjdk.java.net/jdk/jdk12/file/06222165c35f 注意!看了周志明的《深入理解Java虚拟机》上面帖的地址。上面的网站下载得文件不知道是服务器的原因还是什么...编译openjdk12源码,调试jvm。可以下载这个

    jdk12-06222165c35f.zip

    这个是从openjdk官网下载的源码,openjdk12,有感兴趣的同学,想编译openjdk12源码,调试jvm的,从官网下载慢的,可以下载这个

    java基础常识与概念

    Oracle JDK vs OpenJDK Java 和 C++ 的区别? 基本语法 字符型常量和字符串常量的区别? 注释有哪几种形式? 标识符和关键字的区别是什么? Java 语言关键字有哪些? 自增自减运算符 continue、break 和 return 的区别...

    Linux bash:./xxx:无法执行二进制文件报错

    今天给客户发了一个ubuntu下的小工具,用户到手后运行不了, 报错: 一开始以为是全权限的问题,所以让她“ls -la”一下,看看权限,但是结果是ok的,权限没问题 后来发现他是用的是32bit的ubuntu系统,而我们...

    这些不可不知的JVM知识.pdf

    当然,严格来说JVM也是虚拟机规范,有很多不同的实现,Sun/OracleJDK和OpenJDK中的默认Java虚拟机是HotSpot虚拟机,是目前使用范围最广的Java虚拟机,一般讲到的JVM默认指的就是HotSpot虚拟机。 1.2、Java程序运行...

    openjdk8 源码下载

    从官网下载比较慢的同学可以从这里试一下,没有做任何修改,下载后直接解压后编译即可。欢迎广大同学学习交流。

    Java中高级核心知识全面解析(精华必看)

    1.1.3.Oracle JDK 和 OpenJDK 的对比 1.1.4.Java 和 C++的区别? 1.1.5.什么是 Java 程序的主类 应用程序和小程序的主类有何不同? 1.1.6.Java 应用程序与小程序之间有哪些差别? 1.1.7.import java 和 javax 有什么...

    hsdis-amd64.dll-jdk8

    HSDIS是一个Java官方推荐 HotSpot虚拟机JIT编译代码的反汇编插件。我们有了这个插件后,通过JVM参数-XX:+PrintAssembly就可以加载这个HSDIS插件,然后为我们把JIT动态生成的...这个hsdis-amd64.dll是基于openjdk8编译。

    2023最新整理版-java基础面试提

    2. JVM vs JDK vs JRE 3 3. 什么是字节码?采用字节码的好处是什么? 4 4. 为什么不全部使用 AOT 呢? 5 5. 为什么说 Java 语言“编译与解释并存”? 5 6. Oracle JDK vs OpenJDK 6 7. Java 和 C++ 的区别? 9 基本语法...

    .java源码安装-application-java-source-installation-rhel8:Java是基于类的,面向对象的编程语

    Kit的缩写,包括编译,调试和执行Java程序所需的所有工具,可执行文件和二进制文件.JDK依赖于平台,即Windows,Mac和Unix系统有单独的安装程序.JDK包括JVM和JRE完全负责代码执行。 OpenJDK安装- 打开JDK站点地址: ...

    hsdis-amd64.dll-jdk11

    HSDIS是一个Java官方推荐 HotSpot虚拟机JIT编译代码的反汇编插件。我们有了这个插件后,通过JVM参数-XX:+PrintAssembly就可以加载这个HSDIS插件,然后为我们把JIT动态生成...这个hsdis-amd64.dll是基于openjdk11 编译。

    Java虚拟机

    第一部分从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、模块化,以及JDK的编译,这对理解本书后面内容有重要帮助。第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出...

    tomcat解决JPS不可用的问题

    编译安装JDK以后,如果原来的openjdk 没有卸载完毕,就会存在两个jvm虚拟机,需要定义以下默认的jvm。

    java8rt.jar源码-ymdx-jvm:义码当仙之Java虚拟机(JVM)

    JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。 但不一定所有人都知道的是,这个目前看起来“血统纯正”的虚拟机在最初并非由Sun公司开发,而是由一家名为“Longview Technologies”的小公司设计...

Global site tag (gtag.js) - Google Analytics