参考资料:
https://blog.csdn.net/lpwstr/article/details/78840188
http://www.cnblogs.com/lighten/p/5906359.html
https://blog.csdn.net/a510835147/article/details/73011498
vs2015与vs2010语法不一样,如果需要用vs2015编译jdk源码,则需要修改部分源代码。折腾了一会,还是没搞定,最终换成了vs2010,因为jdk8官方就是用vs2010编译的,就没有什么问题。如果你已经解决了,麻烦在评论区告诉我。
安装前准备:
vs2010
freetype-2.8.1
cygwin
freetype-2.8.1下载地址
https://download.savannah.gnu.org/releases/freetype/
编译步骤,参考上面的3篇文章,写的很仔细,我这里再总结下错误。
错误一:解决办法要分类型,网上各种解决方式都有,不能千篇一律,要根据自己的报错提示确定
1)检查MSC_VER="1600",文件路径D:\jvm\jdk8u-dev\hotspot\make\windows\get_msc_ver.sh
if [ "x$FORCE_MSC_VER" != "x" ]; then
echo "MSC_VER=$FORCE_MSC_VER"
else
#MSC_VER_RAW=`cl 2>&1 | "$HEAD" -n 1 | "$SED" 's/.*Version[\ ]*\([0-9][0-9.]*\).*/\1/'`
#MSC_VER_MAJOR=`"$ECHO" $MSC_VER_RAW | "$CUT" -d'.' -f1`
#MSC_VER_MINOR=`"$ECHO" $MSC_VER_RAW | "$CUT" -d'.' -f2`
#MSC_VER_MICRO=`"$ECHO" $MSC_VER_RAW | "$CUT" -d'.' -f3`
MSC_VER_RAW="16.00.40219.01"
MSC_VER_MAJOR="16"
MSC_VER_MINOR="0"
MSC_VER_MICRO="40219"
if [ "${MSC_VER_MAJOR}" -eq 14 -a "${MSC_VER_MINOR}" -eq 0 -a "${MSC_VER_MICRO}" -eq 30701 ] ; then
# This said 1400 but it was really more like VS2003 (VC7) in terms of options
MSC_VER=1399
else
# MSC_VER=`"$EXPR" $MSC_VER_MAJOR \* 100 + $MSC_VER_MINOR`
MSC_VER="1600"
fi
echo "MSC_VER=$MSC_VER"
echo "MSC_VER_RAW=$MSC_VER_RAW"
fi
2 )修改cvtres.exe为cvtres2.exe,只保留windows下的Microsoft.NET下的Framework 或Framework64其中一个,根据编译的软件位数确定,其他的通通都修改掉。
报错二,现象如下
make[2]: *** [CreateJars.gmk:268:/cygdrive/e/jvm/jdk8u-dev/build/windows-x86_64-normal-server-slowdebug/images/lib/_the.rt.jar.contents] 错误 1
make[2]: *** 正在等待未完成的任务....
make[1]: *** [BuildJdk.gmk:101:images] 错误 2
make: *** [/cygdrive/e/jvm/jdk8u-dev//make/Main.gmk:136:images-only] 错误 2
解决方式:vi jdk/make/CreateJars.gmk
:268 定位到268行
$$前添加^M,输入方式是ctrl+v,不放ctrl,然后按M,过程要连续,不能隔太久。
报错三、四:就是cygwin too old和 cpu mismatch,找到相应的D:\jvm\jdk8u-dev\common\autoconf\generated-configure.sh注释掉即可。
编译指令
cd /cygdrive/d/jvm/jdk8u-dev
#编译32位客户端
bash ./configure --with-freetype=/cygdrive/d/jvm/freetype-2.8.1 -with-target-bits=32 --with-debug-level=slowdebug --with-jvm-variants=client with_toolsdir="/cygdrive/d/Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin"
#编译服务器端
bash ./configure --with-freetype=/cygdrive/d/jvm/freetype-2.8.1 --with-debug-level=slowdebug with_toolsdir="/cygdrive/d/Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin"
#然后执行
make images