一、整体编译

我的环境:

Ubuntu 16.04 LTS

apache-ant-1.8.0-bin.zip

环境变量:

export LANG=C
export ALT_BOOTDIR=/home/wangx/warehouse/jdk1..0_80
export ALLOW_DOWNLOADS=true
export HOTSPOT_BUILD_JOBS=
export ALT_PARALLEL_COMPILE_JOBS=
export SKIP_COMPARE_IMAGES=true
export USE_PRECOMPILED_HEADER=true
export BUILD_LANGTOOLS=true
#export BUILD_JAXP=false
#export BUILD_JAXWS=false
#export BUILD_CORBA=false
export BUILD_HOTSPOT=true
export BUILD_JDK=true
#export SKIP_DEBUG_BUILD=false
#export SKIP_FASTDEBUG_BUILD=true
#export DEBUG_NAME=debug
BUILD_DEPLOY=false
BUILD_INSTALL=false
export ALT_OUTPUTDIR=/home/wangx/warehouse/openjdk7src
unset JAVA_HOME
unset CLASSPATH

获取jdk8u源代码

sudo hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev
bash ./get_source.sh

准备编译

sudo bash configure --with-boot-jdk=/home/wangx/warehouse/jdk1..0_80

开始编译,由于我已经编译过了,所以下面的回显显得很简单

wangx@wangx-VirtualBox:~/warehouse/jdk8u-dev$ sudo make
Building OpenJDK for target 'default' in configuration 'linux-x86_64-normal-server-release' ## Starting langtools
## Finished langtools (build time ::) ## Starting hotspot
## Finished hotspot (build time ::) ## Starting corba
## Finished corba (build time ::) ## Starting jaxp
## Finished jaxp (build time ::) ## Starting jaxws
## Finished jaxws (build time ::) ## Starting jdk
## Finished jdk (build time ::) ----- Build times -------
Start -- ::
End -- ::
:: corba
:: hotspot
:: jaxp
:: jaxws
:: jdk
:: langtools
:: TOTAL
-------------------------
Finished building OpenJDK for target 'default'

我编译后生成的结果位于:/home/wangx/warehouse/jdk8u-dev/build/linux-x86_64-normal-server-releas/

二、只编译HOTSPOT虚拟机

cd hotspot/make/
make >& | tee ./hotspot_debug.log

sys/cdefs.h no such file or directory  则sudo apt-get install g++-multilib

bits/c++config.h: No such file or directory  则sudo apt-get install gcc-4.7-multilib g++-4.7-multilib

编译输出目录为

/home/wangx/jdkresearch/jdksource/jdk8u-dev/hotspot/build/linux/linux_i486_compiler2/product

三、在eclipse中调试hotspot

1.下载eclipse CDT  也就是eclipse 支持 C/C++的版本

2.new->Makefile Project with Existing Code

3

4.项目配置,右键properties

5.Project->Build Project

OPENJDK 源码编译的更多相关文章

  1. 第一篇: openJDK源码编译安装--mac版本

    1.为什么要编译JDK 想要一探JDK内部的实现机制,最便捷的路径之一就是自己编译一套JDK,通过阅读和跟踪调试JDK源码去了解Java技术体系的原理,虽然门槛高一点,但肯定比阅读各种书籍,文章,博客 ...

  2. 编译自己的jdk(使用openJDK源码编译jdk )

    找到openjdk网站(http://hg.openjdk.java.net/) 选择需要编译的版本,浏览readme文件,有获取源码及编译步骤 CentOS-7-x86_64-DVD-1804.is ...

  3. 转-OpenJDK源码阅读导航跟编译

    OpenJDK源码阅读导航 OpenJDK源码阅读导航 博客分类: Virtual Machine HotSpot VM Java OpenJDK openjdk 这是链接帖.主体内容都在各链接中.  ...

  4. 走进JVM之一 自己编译openjdk源码

    想要深入了解JVM,就必须了解其实现机制.了解JVM实现的最好方法便是自己动手编译JDK.好了,让我们开始吧! 1.  准备工作 获取OpenJDK源码 本次编译选择的是OpenJDK7u,官方源码包 ...

  5. OpenJDK源码研究笔记(十一):浅析Javac编译过程中的抽象语法树(IfElse,While,Switch等语句的抽象和封装)

    浅析OpenJDK源码编译器Javac的语法树包com.sun.source.tree. 抽象语法树,是编译原理中的经典问题,有点难,本文只是随便写写. 0.赋值语句 public interface ...

  6. OpenJDK源码研究笔记(十三):Javac编译过程中的上下文容器(Context)、单例(Singleton)和延迟创建(LazyCreation)3种模式

    在阅读Javac源码的过程中,发现一个上下文对象Context. 这个对象用来确保一次编译过程中的用到的类都只有一个实例,即实现我们经常提到的"单例模式". 今天,特意对这个上下文 ...

  7. 源码编译OpenJdk 8,Netbeans调试Java原子类在JVM中的实现(Ubuntu 16.04)

    一.前言 前一阵子比较好奇,想看到底层(虚拟机.汇编)怎么实现的java 并发那块. volatile是在汇编里加了lock前缀,因为volatile可以通过查看JIT编译器的汇编代码来看. 但是原子 ...

  8. Hadoop,HBase,Zookeeper源码编译并导入eclipse

    基本理念:尽可能的参考官方英文文档 Hadoop:  http://wiki.apache.org/hadoop/FrontPage HBase:  http://hbase.apache.org/b ...

  9. Ubantu16.04进行Android 8.0源码编译

    参考这篇博客 经过测试,8.0源码下载及编译之后,占用100多G的硬盘空间,尽量给ubantu系统多留一些硬盘空间,如果后续需要在编译好的源码上进行开发,需要预留更多的控件,为了防止后续出现文件权限问 ...

随机推荐

  1. mysql学习笔记--- 字符串函数、日期时间函数

    一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左 ...

  2. Linux命令(九)查找文件find

    4. find -type f   文件 d  目录 l   连接 5. find -size 6. find -maxdepth -2 (最深路径为2) 7. find ./ -maxdepth 1 ...

  3. python -- 异步IO 协程

    python 3.4 >>> import asyncio >>> from datetime import datetime >>> @asyn ...

  4. 去除inline-block出现间距的几种方法

    display:inline-block,简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现,之后的内联对象会排列在同一行 比如两个input,默认中间会产生一些间距 &l ...

  5. Python生成唯一id的方法

    1. uuid import uuid def create_uid(): return str(uuid.uuid1()) if __name__ == '__main__': print(type ...

  6. Linux下解压缩

    1)对于.tar结尾的文件 tar -xf all.tar 2)对于.gz结尾的文件 gzip -d all.gz gunzip all.gz 3)对于.tgz或.tar.gz结尾的文件 tar -x ...

  7. SQL——Hibernate SQL增删改查

    1.查询list数据 实例:user login public String userLogin(){ Session session = HibernateSessionFactory.getSes ...

  8. 关于apache 开启 ssl https 支持 TLS1.2 的些事

    项目背景 需要搭建一个小程序的服务器,当然要使用https协议服务器windows service 2012 r2,后台语言是php,服务集成环境装的是appserv2.5 ,apache2.2证书申 ...

  9. iptables学习笔记_____摘自朱双印个人日志 ____http://www.zsythink.net/

    iptables为我们预先定义了四张表 raw.mangle.nat.filter filter表负责过滤:允许那些ip访问.拒绝那些ip访问.允许那些端口...是最常用的表 #查看表里面所有的规则i ...

  10. 用NDK调用第三方库

    用NDK调用第三方库遇到不少坑,总结一下. 1.添加JNI目录 参考: http://www.cnblogs.com/lanqie/p/7442668.html 2.文件介绍: 其中:JniFacto ...