在windows8.1编译OpenJDK8
来源:互联网 发布:网络舆情是什么意思 编辑:程序博客网 时间:2024/05/03 21:44
声明:本教程在64位windows8.1编译32位JVM
一.编译环境准备
1.OpenJDK下载
OpenJDK是sun公司在2006年JavaOne大会上JDK开源部分建立起来的,OpenJDK与OracleJDK大多数源码一样。进入点击打开链接这个有两种方式下载Mercurial和Bundles(6),mercurial是一个版本管理软件早不如SCN,Git流行了我们用第二种,直接点击http://download.java.net/openjdk/jdk8下载,将下载包解压找到README-builds.html用浏览器打开
2.准备编译环境
1> 安装CYGWIN
在Windows下编译需要一个Unix类似的环境,尤其是shell,可以通过使用CYGWIN或者是MinGW/MSYS来构建环境。这些模仿环境的工具不同之处主要在于它们对于路径名称的处理。这里以CYGWIN为例。点击https://cygwin.com/setup-x86_64.exe下载,运行setup-x86_64.exe
如下图选择第二个:
下一步就是选择下载文件所保存的路径,自行选择,再下一步选择Direct Connection,接着下一步在user URL添加这个http://mirrors.163.com/cygwin这U
RL,这个URL最全最快
在查找框中通过Interpreters查找BinaryName选择上面需要下载的exe,下载之后再安装,你也可以全部下载(我全部下载安装了共占94G都是泪),一定要要将安装好的cygwin的bin路径添加到path路径中
2>安装freetype
下载地址: http://gnuwin32.sourceforge.net/downlinks/freetype-bin-zip.php
会得到一个freetype-2.3.5-1-bin.zip文件,解压记住解压路径,这个freetype是用来编译jdk中awt和swing中的渲染字体库
3>Visual Studio 2010 和 Visual Studio 2010 SP1
Visual Studio 2010下载地址:
http://download.microsoft.com/download/1/E/5/1E5F1C0A-0D5B-426A-A603-1798B951DDAE/VS2010Express1.iso
Visual Studio 2010 SP1下载地址:
http://download.microsoft.com/download/E/B/A/EBA0A152-F426-47E6-9E3F-EFB686E3CA20/VS2010SP1dvd1.iso
都是英文版,先装Visual Studio 2010再装Visual Studio 2010 SP1 ,OpenJDK Windows构建需要VS2010专业版编译器只找到32位的所以编译32位的JDK
4>安装BootStrap JDK
因为OpenJDK各个组成部分(Hotspot,JDK API,JAXWS,JAXP....)有的是c++写的更多代码是java自身实现的,所以编译这些java代码需要一个JDK,官方称这个叫BootStrap JDK。编译OpenJDK8用JDK7,以此类推。所以配置一个有JDK7的环境你懂得你自己应该会这个JDK配置环境
二.开始编译JDK
上面我们将需要的编译环境搭好了现在开始编译JDK,下面好多坑一个个解决,进入OpenJDK8解压的路径我这里为D:\Application\HotSpot\openjdk-8-src-b132-03_mar_2014\openjdk,执行下面的命令
bash ./configure --with-freetype=D:\Application\freetype-2.3.5-1-bin --with-target-bits=32 --enable-debug其中D:\Application\freetype-2.3.5-1-bin就是freetype解压的路径
--with-target-bits=32表示构建32位的JDK,
--enable-debug表示构建一个可以调试的JDK(fastdebug),
--with-jvm-variants=client表示只构建client版的JVM,不加这个参数默认构建server版的,
如果使用--with-jvm-variants=client,server则同时构建client和server版的JVM。
通过这张图咱们能知道运行配置的它是运行\openjdk\common\autoconf路径下的generated-configure.sh的shell文件。以后咱们有什么问题就可以在这个路径中的各个文件查找注释掉就可以了
这之后都是坑。
1. Your cygwin is too old. You are running 2.6.0(0.304/5/3), but at least cygwin 1.7 is required. Please upgrade.
尼玛顿时奔溃老兄我92G呀重新下载吗别闹,别急打开generated-configure.sh找到7217-7225注释掉他们就可以了
2.checking what kind of 'find' is first on the PATH... Windows configure: Your path contains Windows tools (C:\Windows\system32) before your unix (cygwin or msys) tools. configure: This will not work. Please correct and make sure /usr/bin (or similar) is first in path.
这个好改将,原先加入path的cygwin的bin路径加入到path列表中的最前面
3.Not Found msvcr100.dll这个是有的只是找不到而已我的在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\X64中将这个加入path路径中或者将C:\Program Files (x86)\Microsoft Visual Studio 10.0\path中加入path路径中
4.configure: Could not find D:\Application\freetype-2.3.5-1-bin/lib/freetype.dll.Ignoring location.
有两种解决办法
一就是将D:\Application\freetype-2.3.5-1-bin\bin中的freetype6.dll粘贴到../lib中并修改为freetype.dll
或者重新编译freetype.dll
这个就是freetype没有编译的问题了。使用Visual Studio C++ 2010对其编译一下即可。具体步骤如下:
1)用VS2010打开freetype/builds/windows/vc2010下的freetype.sln
2)选中项目右击,选择属性,出现配置框,点击配置管理器,界面如下图。
3)右击项目,选择生成即可。在freetype目录中/objs/vc2010/x64找到刚刚自己生成的freetype.dll文件。在freetype根目录中创建一个lib文件夹,将这个文件放入其中。要32位的就是修改一下相应的配置就行了。除了dll,还要生成一个lib格式。网上看到其编译64位时平台工具集要用的是WindowsXXSDK,32位用的是v100。但是实际上好像没有什么问题,姑且先记录一下。这里编译的时候警告了编码问题,但是当时没有管,不知道后面产生的乱码现象是不是这个问题。
我就有这几个bug了如果你你还有就去\openjdk\common\autoconf中找到对应文件打开文件ctrl+f查找对应的bug可以了就。
配置成功界面
- 在windows8.1编译OpenJDK8
- 64位windows8.1编译openjdk8
- 在docker上编译openjdk8
- 编译openjdk8
- 编译openjdk8
- 在Ubuntu 12.04 上编译调试 OpenJDK8
- 在Ubuntu16.04下编译OPENJDK8
- jvm原理1:cenos编译openjdk8
- MAC编译OpenJDK8
- centos7编译openjdk8
- ubuntu14 编译openjdk8
- Java虚拟机学习笔记(1)Windows下编译OpenJDK8
- 编译openJDK8其实非常简单
- Matconvnet在windows8下编译安装过程
- CentOS上编译OpenJDK8源码 以及 在eclipse上调试HotSpot虚拟机源码
- 【JDK编译】Mac OS编译OpenJDK8
- 在Windows8.1上用VS2013编译Caffe并训练和分类自己的图片
- ubuntu编译并调试OpenJDK8源码实践
- TreeView树状结构
- Optional用法(Java SE 8–Java SE 9)
- HDU_5738 Eureka
- RabbitMQ中的消息回调机制
- 理解一致性哈希算法(consistent hashing)
- 在windows8.1编译OpenJDK8
- 摸索 Jenkins 的自动维护方案
- 数据结构实验之链表三:链表的逆置
- 2016冬天学习记录-1.14
- 【博客已转移,新博客地址】
- Dubbo点滴(2)之集群容错
- AJAX异步请求
- springboot的缓存技术
- POJ1240