首先下载openjdk8
http://hg.openjdk.java.net/jdk8/jdk8/
这里用到版本管理工具Mercurial,与git有些类似,不了解的话可以查一下。
clone后,里面有个文件README-builds.html,里面说的比较详细,是主要参考文档。
clone之后的jdk8需要运行sh ./get_source.sh才能获取完整的代码。

我的编译环境及准备(这里举例说明编译32位的openjdk):
win8.1 64位
mingw(官网http://www.mingw.org/,这里用的3.82.90,注意下载时选msys)
freetype(一个字体引擎,oracle
jdk没有开源其字体,因此openjdk用开源的freetype,官网http://www.freetype.org/,这里用的是freetype2.6)
Visual Studio 2010(windows版本的openjdk会用到其编译器,这里选用的是Express
版本。http://download.microsoft.com/download/1/E/5/1E5F1C0A-0D5B-426A-A603-1798B951DDAE/VS2010Express1.iso
sp1补丁:http://download.microsoft.com/download/E/B/A/EBA0A152-F426-47E6-9E3F-EFB686E3CA20/VS2010SP1dvd1.iso)
jdk1.7(要update 7以上的版本,这里用的jdk-7u45-windows-x64.exe)

编译过程:
1、编译freetype,打开目录\freetype2\builds\windows\vc2010,直接用vs2010打开freetype.sln编译。
注意属性设置:
编译64位:
Configuration Manager -> Active Solution Manager -> Type or select the new Platform -> x64
Configuration -> Release Multithreaded
Platform -> x64
Output Directory -> rename ".\..\..\..\objs\win32\vc2010\" to ".\..\..\..\objs\win64\vc2010\"
Intermediate Directory -> rename ".\..\..\..\objs\release_mt\" to ".\..\..\..\objs\release_mt_64\"
Target Name -> rename to "freetype"
Platform Toolset -> Windows7.1SDK

编译32位:
Configuration -> Release Multithreaded
Platform -> win32
Target Name -> rename to "freetype"
Platform Toolset -> v100
这里编译32位,分别编译成freetype.dll和freetype.lib。
在freetype2目录下创建文件夹lib,把这两个文件复制进去(注:编译openjdk8只用这两个文件)。

2、获取openjdk源代码:
打开msys,进入刚才clone的jdk8目录,我的在D盘根目录,所以

cd /d/jdk8
sh ./get_source.sh

(获取源码可能有些慢,可以不用Mercurial,直接下载http://download.java.net/openjdk/jdk8,只是不是最新)

注:
jdk8u,用sh ./get_source.sh获取时可能有些麻烦,例如中文操作系统会报
ERROR:Could not determine Mercurial version of ...
这时候加个系统环境变量LANGUAGE,值为en就可以了。
如果直接下载,目前打包的只能下载到jdk8u40,https://www.java.net/download/openjdk/jdk8u40/ri/openjdk-8u40-src-b25-10_feb_2015.zip,相对较老。

3、configure
freetype2我也放在D盘根目录,因此

bash ./configure --with-freetype=../freetype2 --with-target-bits=

这时候会发现提示少一些命令,运行

mingw-get.exe install msys-zip
mingw-get.exe install msys-unzip

还有一些其它的包,需要什么,就补什么,运行bash ./configure时会有提示。

缺少cpio.exe,可以把bsdcpio.exe重命名为cpio.exe。

4、编译openjdk8
configure成功后,修改D:\jdk8\build\windows-x86-normal-server-release\spec.gmk文件中JOBS的值为1(JOBS?=1),JOBS多了编译不通过,有关JOBS的说明参考README-builds.html。
运行命令

make all

或者不修改文件,直接

make all JOBS=

编译成功后,查看成果
D:\jdk8\build\windows-x86-normal-server-release\images\j2sdk-image
官方有测试过程,可以试着测试测试。

64位windows8.1编译openjdk8的更多相关文章

  1. Ubuntu12.04安装64位系统出现编译错误error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or dir

    问题: Ubuntu12.04安装64位系统出现编译错误error while loading shared libraries: libz.so.1: cannot open shared obje ...

  2. 64位 CentOS NDK 编译 FFMPEG

    64位 CentOS NDK 编译 FFMPEG 一.           参考文章: http://www.cnblogs.com/baopu/p/4733029.html http://www.c ...

  3. 在64位linux下编译32位程序

    在64位linux下编译32位程序 http://blog.csdn.net/xsckernel/article/details/38045783

  4. Hadoop 3.2.1 win10 64位系统 vs2015 编译

    Hadoop 3.2.1 win10 64位系统 vs2015 编译 1        环境配置 1.1   JDK下载安装 1.1.1         下载 JDK 1.8    (jdk1.8.0 ...

  5. 64位centos 下编译 hadoop 2.6.0 源码

    64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新 ...

  6. Win7 64位 VS2013环境编译CGAL-4.7

    看到有人在QQ空间感叹编译CGAL配置折腾了一天时间,自己也想试试,虽然并不打算用,但感觉这库也挺有名的,想必日后用得着,于是着手试着编译. 首先是看一下官网的windows下配置说明 http:// ...

  7. xsocks 64位平台下编译问题小记

    1.src/common/public.h uint32_t lpParameter 改为 void* lpParameter; 2.SocksMgr.cpp DWORD WINAPI CSocksM ...

  8. 64位CentOS上编译 Hadoop 2.2.0

    下载了Hadoop预编译好的二进制包,hadoop-2.2.0.tar.gz,启动起来后.总是出现这样的警告: WARN util.NativeCodeLoader: Unable to load n ...

  9. win7 64位下自行编译OpenCV2.4.10+CUDA toolkit 5.5的整个过程以及需要注意的问题(opencv+cuda并行计算元素的使用)

           首先说明的是,这个帖子是成功的编译了dll,但是这个dll使用的时候还是很容易出现各种问题的. 发现错误可能是由于系统安装了太多版本的opencv,环境变量的设置混乱,造成dll版本加载 ...

随机推荐

  1. 普林斯顿大学算法课 Algorithm Part I 学习资源

    网友笔记参考 果壳Mooc首页 revilwang的专栏 白色咖啡 Weiran Liu的渣技术小专栏 Bug表:http://findbugs.sourceforge.net/bugDescript ...

  2. Advanced Fruits(好题,LCS的模拟)

    Advanced Fruits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  3. SQL Server中的DATEPART函数的使用

    下面文章来自:http://blog.csdn.net/hello_world_wusu/article/details/4632049 定义和用法 DATEPART() 函数用于返回日期/时间的单独 ...

  4. 实现一个做双向NAT的虚拟网卡

    问题描写叙述与解决方式 还是老问题.Linux系统中通过iptables配置的NAT无法在双向通信环境中使用,你无法配置一条NAT规则实现对两个方向主动发起的流量做NAT,解决问题的方案有好几种: 1 ...

  5. Android应用中使用百度地图API定位自己的位置(二)

    官方文档:http://developer.baidu.com/map/sdkandev-6.htm#.E7.AE.80.E4.BB.8B3 百度地图SDK为开发人员们提供了例如以下类型的地图覆盖物: ...

  6. C#中使用日志类,添加dll时出现错误

    警告 1 未能解析引用的程序集 “log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, proces ...

  7. Oracle初级入门 根据某字段重复只取一条记录,并计计算重复条数

    在平常开发中,去重复数据经常使用到,本人新手,接触Oracle也不久,开发中用到的小知识点,记录一下,老鸟可绕道,如果有写错的,请指正. 去重复记录可以使用distinct,当只查询一列数据时,可以轻 ...

  8. Fedora、CentOS install TTF/otf fonts

    Step 1:切换至字体下载目录: [Richard@localhost Downloads]$ ll | grep otf -rw-rw-r--. Richard Richard 7月 RBNo2L ...

  9. Django Url编码问题

    Django Url编码问题   最近在学习Django,写一个blog程序练练手手.对于一个才开始接触web开发的来说,难免会遇到一些问题.   有一个这样的模板: {%for k,v in cat ...

  10. [整理]DLL延时加载 && 设置进程私有环境变量

    DLL延时加载鉴于静态和动态加载之间,即无需在代码中显示加载但它内队依然是动态加载的方式只是系统帮处理了.这样做好处是: 1. 可以加快启动时间(因为它是动态加载在需要的时间加载), 2. 减小编写L ...