1. 1.首先去 这里 http://download.java.net/openjdk/jdk7/ 下载OpenJDK7的源码zip包
  2. 2. 简要介绍下OpenJDK7中的目录
  3. hotspot: 放有OpenJDK Hotspot Virtual Machine 的源代码和make文件
  4. langtools: 放有OpenJDK 的javac 等工具的源代码和make文件
  5. cobra: 放有OpenJDK Cobra 的源代码和make文件
  6. jaxws: 放有OpenJDK JAXWS 的相关信息和make文件, 具体的源代码再编译时会下载
  7. jaxp: 放有OpenJDK JAXP 相关信息和make文件,具体的源代码再编译时会下载
  8. jdk: 放有OpenJDK runtime libraries 的源代码和make文件
  9. 直接OpenJDK 目录下有整个OpenJDK 的make文件
  10. 3. 检查系统的工具版本,以下配置基于OpenJDK7
  11. 3.1 GNU make 3.81或更高版本
  12. 3.2 ANT 1.7.1或更高版本
  13. 3.3 Sun 的BootstrapJDK6 update14或更高版本(虽然有些奇怪,但是因为编译这些Java代码需要一个可用的JDK)
  14. 3.4 GNU gcc 4.3或更高版本
  15. 3.5 ZIP 2.2或更高版本
  16. 3.6 FreeType 2.3或更高版本 (下载地址http://download.savannah.gnu.org/releases/freetype/  ,下载后解压)
  17. 3.7 Advanced Linux Sound Architecture(ALSA) 0.9.1或更高版本(下载地址http://www.alsa-project.org/main/index.php/Download)
  18. 4. 如果怕麻烦可以使用相关命令来安装依赖包
  19. Fedora: yum-builddep java-1.6.0-openjdk
  20. Debian:  aptitude build-dep openjdk-6
  21. Ubuntu: sudo aptitude build-dep openjdk-6
  22. 其它具体的可以参考OpenJDK中的README-builds.html
  23. 5. 环境工具设置好后了运行以下命令以设置或取消环境变量
  24. export LANG=C
  25. export ALT_BOOTDIR=/usr/java/jdk1.6.0_30/
  26. export ALLOW_DOWNLOADS=true
  27. export USE_PRECOMPILED_HEADER=true
  28. export SKIP_DEBUG_BUILD=false
  29. export SKIP_FASTDEBUG_BUILD=true
  30. export DEBUG_NAME=debug
  31. unset CLASSPATH
  32. unset JAVA_HOME
  33. 6. 到OpenJDK目录下运行 make sanity 进行检测 如果输出如下证明OpenJDK 编译环境检测没有问题
  34. PREVIOUS_RELEASE_IMAGE =
  35. ALT_PREVIOUS_RELEASE_IMAGE =
  36. Sanity check passed.
  37. 如果是下面这样证明 环境依然有问题, 按照提示的WARNING 和 ERROR进行修改 直到检测通过
  38. ERROR: Your JAVA_HOME environment variable is set.  This will
  39. most likely cause the build to fail.  Please unset it
  40. and start your build again.
  41. Exiting because of the above error(s).
  42. make: *** [post-sanity] Error 1
  43. 7. 检测通过了在OpenJDK目录下运行
  44. make clean
  45. make
  46. 8. 注意事项
  47. 8.1 保持所有命令是在同一个用户下运行的而且这个用户么还有JAVA_HOME 等环境变量
  48. 这样编译程序才能正确的找到环境变量和不会有权限冲突
  49. 8.2 OpenJDK 编译可能需要些时间,不要慌张
  50. 8.3 要有ALLOW_DOWNLOADS=true。否则编译jaxp的时候会出错,因为jaxp的源代码是临时下载的
  51. 8.3 OpenJDK 目录下的README-builds.html网页文档可以提供很多帮助.
  52. 9. 编译完成
  53. -- Build times ----------
  54. Target debug_build
  55. Start 2012-02-18 21:09:17
  56. End   2012-02-18 21:54:06
  57. 00:01:04 corba
  58. 00:20:53 hotspot
  59. 00:03:57 jaxp
  60. 00:04:14 jaxws
  61. 00:14:15 jdk
  62. 00:00:26 langtools
  63. 00:44:49 TOTAL
  64. 在OpenJDK目录下有个build文件夹是编译的output文件夹
  65. azrael@ubuntu:~/Tech/openjdk$ cd build/
  66. azrael@ubuntu:~/Tech/openjdk/build$ ll
  67. total 16
  68. drwxr-xr-x  4 azrael azrael 4096 Feb 18 20:37 ./
  69. drwxr-xr-x 12 azrael azrael 4096 Feb 18 20:35 ../
  70. drwxr-xr-x 27 azrael azrael 4096 Feb 18 21:53 linux-i586/
  71. drwxr-xr-x 26 azrael azrael 4096 Feb 18 21:08 linux-i586-debug/
  72. azrael@ubuntu:~/Tech/openjdk/build/linux-i586/bin$ ./java -version
  73. openjdk version "1.7.0-internal-debug"
  74. OpenJDK Runtime Environment (build 1.7.0-internal-debug-azrael_2012_02_18_20_37-b00)
  75. OpenJDK Server VM (build 21.0-b17-jvmg, mixed mode)

Linux 下编译自己的 OpenJDK7 包括JVM和JDK API的更多相关文章

  1. linux下编译gcc6.2.0

    linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...

  2. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  3. 【原创】Linux下编译链接中常见问题总结

    前言 一直以来对Linux下编译链接产生的问题没有好好重视起来,出现问题就度娘一下,很多时候的确是在搜索帮助下解决了BUG,但由于对原因不求甚解,没有细细研究,结果总是在遇到在BUG时弄得手忙脚乱得. ...

  4. Linux 下编译、安装、配置 QT

    转自Linux 下编译.安装.配置 QT 注意:编译安装耗时费力,且很容易出错,要不断调整编译参数,不推荐使用,否则这将会是一个纠结痛苦的过程. 打算做嵌入式图像处理,计划方案嵌入式Linux+Ope ...

  5. linux下编译eXosip、osip,以及UAC和UAS的例子

    从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013 ...

  6. linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  7. linux下编译原理分析

    linux下编译hello.c 程序,使用gcc hello.c,然后./a.out就能够执行:在这个简单的命令后面隐藏了很多复杂的过程,这个过程包含了以下的步骤: ================= ...

  8. [转载]linux下编译php中configure参数具体含义

    编译N次了   原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php ...

  9. linux下编译运行TIGL Viewer步骤

    linux下编译运行TIGL Viewer步骤(仅为了正确编译安装的话直接跳到步骤3) 1. linux发行版选择:由于linux发行版众多,不同版本包含的库版本可能存在差别,因此需要选择正确的版本. ...

随机推荐

  1. httpclient4.X中使用HTTPS的方法采集12306网站

    HttpClient请求https的实例: package train; import java.io.IOException; import java.security.NoSuchAlgorith ...

  2. 【leetcode】Excel Sheet Column Title

    Excel Sheet Column Title Given a non-zero positive integer, return its corresponding column title as ...

  3. mongoengine

    http://docs.mongodb.org/ecosystem/drivers/python/ http://www.cnblogs.com/holbrook/archive/2012/03/11 ...

  4. 【转】你可能不知道的Shell

    本文转自http://coolshell.cn/articles/8619.html,只摘取了其中的一部分. 再分享一些可能你不知道的shell用法和脚本,简单&强大! 在阅读以下部分前,强烈 ...

  5. FFmpeg frei0r water 滤镜

    FFmpeg frei0r water 滤镜, 在 linux 环境中很流畅,但在 XP 环境中抛出异常 研究一段时间修改了代码,能在 XP 里跑得动. sample.water.avi water. ...

  6. ABAP 单位转换函数

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'         EXPORTING           input                = wa_all-btg ...

  7. 【转】TextView长按复制实现方法小结

    有这么一个需求,用户在浏览文本信息时希望长按信息就能弹出复制的选项方便保存或者在别的页面使用这些信息.类似的, 就像长按WebView或者EditText的内容就自动弹出复制选项. 这里面主要是2个特 ...

  8. MST:Agri-Net(POJ 1258)

     Agri-Net 题目大意:农夫有一片农场,现在他要把这些田地用管子连起来,田地之间有一定距离,铺设每一段管子的长度与这些田地与田地距离是一样的,问你最小的铺设方案. 这一题很裸,Kruskal算法 ...

  9. 51nod 1070 Bash游戏 V4 (斐波那契博弈)

    题目:传送门. 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗: 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的 ...

  10. [页面滚动到底部]jquery $(window).height()取值等于$(document).height()的问题

    问题现象:JSP中头部引用了某个head.jsp,在videoList.jsp中生成片段时如下 实际最终生成的HTML如下: <!DOCTYPE html>没有解析到,原因找到了,先想办法 ...