<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.riguz.com/index.php?action=history&amp;feed=atom&amp;title=Compile_OpenJDK8_on_MacOSX</id>
	<title>Compile OpenJDK8 on MacOSX - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.riguz.com/index.php?action=history&amp;feed=atom&amp;title=Compile_OpenJDK8_on_MacOSX"/>
	<link rel="alternate" type="text/html" href="https://wiki.riguz.com/index.php?title=Compile_OpenJDK8_on_MacOSX&amp;action=history"/>
	<updated>2026-06-02T19:18:40Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.riguz.com/index.php?title=Compile_OpenJDK8_on_MacOSX&amp;diff=3722&amp;oldid=prev</id>
		<title>Riguz：​Riguz移动页面Blog:Compile OpenJDK8 on MacOSX至Compile OpenJDK8 on MacOSX，不留重定向</title>
		<link rel="alternate" type="text/html" href="https://wiki.riguz.com/index.php?title=Compile_OpenJDK8_on_MacOSX&amp;diff=3722&amp;oldid=prev"/>
		<updated>2023-12-18T15:27:46Z</updated>

		<summary type="html">&lt;p&gt;Riguz移动页面&lt;a href=&quot;/index.php?title=Blog:Compile_OpenJDK8_on_MacOSX&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Blog:Compile OpenJDK8 on MacOSX（页面不存在）&quot;&gt;Blog:Compile OpenJDK8 on MacOSX&lt;/a&gt;至&lt;a href=&quot;/Compile_OpenJDK8_on_MacOSX&quot; title=&quot;Compile OpenJDK8 on MacOSX&quot;&gt;Compile OpenJDK8 on MacOSX&lt;/a&gt;，不留重定向&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2023年12月18日 (一) 15:27的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh-Hans-CN&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki_db:diff:1.41:old-3721:rev-3722 --&gt;
&lt;/table&gt;</summary>
		<author><name>Riguz</name></author>
	</entry>
	<entry>
		<id>https://wiki.riguz.com/index.php?title=Compile_OpenJDK8_on_MacOSX&amp;diff=3721&amp;oldid=prev</id>
		<title>2023年12月18日 (一) 15:27 Riguz</title>
		<link rel="alternate" type="text/html" href="https://wiki.riguz.com/index.php?title=Compile_OpenJDK8_on_MacOSX&amp;diff=3721&amp;oldid=prev"/>
		<updated>2023-12-18T15:27:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2023年12月18日 (一) 15:27的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l131&quot;&gt;第131行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第131行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cd test &amp;amp;&amp;amp; make PRODUCT_HOME=`pwd`/../build/*/images/j2sdk-image JT_HOME=/usr/bin/jtreg all&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cd test &amp;amp;&amp;amp; make PRODUCT_HOME=`pwd`/../build/*/images/j2sdk-image JT_HOME=/usr/bin/jtreg all&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:JVM]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_db:diff:1.41:old-2533:rev-3721:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Riguz</name></author>
	</entry>
	<entry>
		<id>https://wiki.riguz.com/index.php?title=Compile_OpenJDK8_on_MacOSX&amp;diff=2533&amp;oldid=prev</id>
		<title>imported&gt;Riguz：​纯手工编译[OpenJDK8](http://openjdk.java.net/projects/jdk8u/)。在Mac上尝试了一下，因为编译这玩意需要XCode4*，而现在XCode都升级到9了，虽然可以下载旧版的XCode，但试了一下貌似不太兼容。于是在Virtualbox中装lubuntu来编译一下玩玩。在Virtualbox使用NAT网络做端口转发的时候，竟然发现不支持主机的22端口（貌似是[权限的问题](https://apple.stackexchange.com/questions/235518/ssh-to-virtualbox-mac-host-linux-guest-using-nat)），改为10240则Ok。</title>
		<link rel="alternate" type="text/html" href="https://wiki.riguz.com/index.php?title=Compile_OpenJDK8_on_MacOSX&amp;diff=2533&amp;oldid=prev"/>
		<updated>2018-04-09T00:00:00Z</updated>

		<summary type="html">&lt;p&gt;纯手工编译[OpenJDK8](http://openjdk.java.net/projects/jdk8u/)。在Mac上尝试了一下，因为编译这玩意需要XCode4*，而现在XCode都升级到9了，虽然可以下载旧版的XCode，但试了一下貌似不太兼容。于是在Virtualbox中装lubuntu来编译一下玩玩。在Virtualbox使用NAT网络做端口转发的时候，竟然发现不支持主机的22端口（貌似是[权限的问题](https://apple.stackexchange.com/questions/235518/ssh-to-virtualbox-mac-host-linux-guest-using-nat)），改为10240则Ok。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;纯手工编译[http://openjdk.java.net/projects/jdk8u/ OpenJDK8]。在Mac上尝试了一下，因为编译这玩意需要XCode4*，而现在XCode都升级到9了，虽然可以下载旧版的XCode，但试了一下貌似不太兼容。于是在Virtualbox中装lubuntu来编译一下玩玩。在Virtualbox使用NAT网络做端口转发的时候，竟然发现不支持主机的22端口（貌似是[https://apple.stackexchange.com/questions/235518/ssh-to-virtualbox-mac-host-linux-guest-using-nat 权限的问题]），改为10240则Ok。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install mercurial&lt;br /&gt;
sudo apt-get install lrzsz&lt;br /&gt;
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u&lt;br /&gt;
cd jdk8u&lt;br /&gt;
sh get_source.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
可能遇到的问题：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
jdk:   abort: stream ended unexpectedly (got 8159 bytes, expected 29096)&lt;br /&gt;
...&lt;br /&gt;
WARNING: hotspot exited abnormally (255)&lt;br /&gt;
WARNING: jdk exited abnormally (255)&lt;br /&gt;
WARNING: nashorn exited abnormally (255)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
解决办法是重试N次get_source.sh就可以了。&lt;br /&gt;
&lt;br /&gt;
切换到最新的release tag：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hg tags&lt;br /&gt;
hg up jdk8u162-b12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
安装依赖项：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install build-essential&lt;br /&gt;
sudo apt-get install libasound2-dev libcups2-dev libfreetype6-dev&lt;br /&gt;
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
sudo add-apt-repository ppa:openjdk-r/ppa  &lt;br /&gt;
sudo apt-get update   &lt;br /&gt;
sudo apt-get install openjdk-7-jdk  &lt;br /&gt;
# refer https://github.com/hgomez/obuildfactory/wiki/How-to-build-and-package-OpenJDK-8-on-Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
然后开始编译吧：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash ./configure --with-target-bits=64 --with-freetype-include=/usr/include/freetype2/ --with-freetype-lib=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu16下面必须指定freetype的路径，按照OpenJDK Build README里面所说，期望的路径是```Expecting the freetype libraries under lib/ and the headers under include/. ```.而且特别指出:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*The build is now a &amp;quot;configure &amp;amp;&amp;amp; make&amp;quot; style build&lt;br /&gt;
*Any GNU make 3.81 or newer should work&lt;br /&gt;
*The build should scale, i.e. more processors should cause the build to be done in less wall-clock time&lt;br /&gt;
*Nested or recursive make invocations have been significantly reduced, as has the total fork/exec or spawning of sub processes during the build&lt;br /&gt;
*Windows MKS usage is no longer supported&lt;br /&gt;
*Windows Visual Studio vsvars*.bat and vcvars*.bat files are run automatically&lt;br /&gt;
*Ant is no longer used when building the OpenJDK&lt;br /&gt;
*Use of ALT_* environment variables for configuring the build is no longer supported&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
因此有些文章上面设置ant, ALT_BOOTDIR等步骤不适用编译jdk8.为了提高编译速度，在虚拟机中设置了使用4个cpu核心。我们需要指定编译使用的cpu数来提高编译速度。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make clean&lt;br /&gt;
rm -rf build&lt;br /&gt;
bash ./configure --with-target-bits=64 --with-freetype-include=/usr/include/freetype2/ --with-freetype-lib=/usr/lib/x86_64-linux-gnu --with-jobs=4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
这样配置完后的输出如下:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A new configuration has been successfully created in&lt;br /&gt;
/home/riguz/jdk/jdk8u/build/linux-x86_64-normal-server-release&lt;br /&gt;
using configure arguments &amp;#039;--with-target-bits=64 --with-freetype-include=/usr/include/freetype2/ --with-freetype-lib=/usr/lib/x86_64-linux-gnu --with-jobs=4&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Configuration summary:&lt;br /&gt;
* Debug level:    release&lt;br /&gt;
* JDK variant:    normal&lt;br /&gt;
* JVM variants:   server&lt;br /&gt;
* OpenJDK target: OS: linux, CPU architecture: x86, address length: 64&lt;br /&gt;
&lt;br /&gt;
Tools summary:&lt;br /&gt;
* Boot JDK:       java version &amp;quot;1.7.0_95&amp;quot; OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-3) OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)  (at /usr/lib/jvm/java-7-openjdk-amd64)&lt;br /&gt;
* C Compiler:     gcc-5 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 version 5.4.0 (at /usr/bin/gcc-5)&lt;br /&gt;
* C++ Compiler:   g++-5 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 version 5.4.0 (at /usr/bin/g++-5)&lt;br /&gt;
&lt;br /&gt;
Build performance summary:&lt;br /&gt;
* Cores to use:   4&lt;br /&gt;
* Memory limit:   1997 MB&lt;br /&gt;
* ccache status:  not installed (consider installing)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
这里有个performance的提示，就是ccache。但是这玩意安装之后貌似[https://bugs.openjdk.java.net/browse/JDK-8067132 识别错误]，索性不要了。然后就可以开始编译了&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make images&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
尴尬的是虚拟机磁盘空间(10G)不够，幸亏可以动态调整一下&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VBoxManage modifyhd ~/VirtualBox\ VMs/lubuntu/lubuntu.vdi --resize 20480&lt;br /&gt;
# 完了之后需要进入到系统，用分区工具调整分区大小，可能需要删除swap分区，扩展/后再重建swap分区&lt;br /&gt;
sudo apt-get install gparted&lt;br /&gt;
gparted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
images目标会```create complete j2sdk and j2re images```，花费了大约10分钟时间:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
----- Build times -------&lt;br /&gt;
Start 2018-04-11 10:03:36&lt;br /&gt;
End   2018-04-11 10:13:47&lt;br /&gt;
00:00:23 corba&lt;br /&gt;
00:00:15 demos&lt;br /&gt;
00:04:49 hotspot&lt;br /&gt;
00:01:02 images&lt;br /&gt;
00:00:15 jaxp&lt;br /&gt;
00:00:20 jaxws&lt;br /&gt;
00:02:26 jdk&lt;br /&gt;
00:00:28 langtools&lt;br /&gt;
00:00:13 nashorn&lt;br /&gt;
00:10:11 TOTAL&lt;br /&gt;
-------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
生成的文件在build/*/images中&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
riguz@riguz-VirtualBox:~/jdk/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image$ cd bin/&lt;br /&gt;
riguz@riguz-VirtualBox:~/jdk/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image/bin$ ls&lt;br /&gt;
appletviewer  javadoc       jdeps       jsadebugd     pack200      servertool&lt;br /&gt;
extcheck      javah         jhat        jstack        policytool   tnameserv&lt;br /&gt;
idlj          javap         jinfo       jstat         rmic         unpack200&lt;br /&gt;
jar           java-rmi.cgi  jjs         jstatd        rmid         wsgen&lt;br /&gt;
jarsigner     jcmd          jmap        keytool       rmiregistry  wsimport&lt;br /&gt;
java          jconsole      jps         native2ascii  schemagen    xjc&lt;br /&gt;
javac         jdb           jrunscript  orbd          serialver&lt;br /&gt;
riguz@riguz-VirtualBox:~/jdk/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image/bin$ ./java -version&lt;br /&gt;
openjdk version &amp;quot;1.8.0-internal&amp;quot;&lt;br /&gt;
OpenJDK Runtime Environment (build 1.8.0-internal-riguz_2018_04_11_10_03-b00)&lt;br /&gt;
OpenJDK 64-Bit Server VM (build 25.71-b00, mixed mode)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
最后就是测试了。测试需要安装jtreg，注意一定要指定JT_HOME.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install jtreg&lt;br /&gt;
cd test &amp;amp;&amp;amp; make PRODUCT_HOME=`pwd`/../build/*/images/j2sdk-image JT_HOME=/usr/bin/jtreg all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;Riguz</name></author>
	</entry>
</feed>