在Win 11下使用Visual Studio 2019和cygwin编译JBR(Java SDK 17)源码
创始人
2024-06-01 19:35:19
0

很多文章介绍了JDK 8和JDK11源码在Linux编译,很少有人介绍了JDK 17在windows的编译过程,所以写了这篇文章,为什么选用JBR 17版本,因为JBR17 版本集成了HotSwapAgent功能,具体HotSwapAgent有什么用,请看我前面写的文章:

https://blog.csdn.net/penker_zhao/article/details/127460206

在Github上有些简短的描述,如何在Windows环境下,编译源码,但还是遇到了一些坑,现在特别说明下:

JetBrains/JetBrainsRuntime: Runtime environment based on OpenJDK for running IntelliJ Platform-based products on Windows, macOS, and Linux (github.com)

英文原文如下:

Install the following:Cygwin x64. Required packages: autoconf, binutils, cpio, diffutils, file, gawk, gcc-core, make, m4, unzip, zip.
Install those together with Cygwin.
Visual Studio compiler toolset. Install with the desktop development kit, which includes Windows SDK and compilers. Visual Studio 2019 is supported by default.
Java 18 (for instance, Azul Zulu Builds of OpenJDK 18). If you have problems while configuring, read Java tips on Cygwin.
From the command line:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
"c:\Program_Files\cygwin64\bin\mintty.exe" /bin/bash -l
The first command sets up environment variables, the second starts a Cygwin shell with the proper environment.In the Cygwin shell:$ cd JetBrainsRuntime
$ git checkout main
$ bash configure --with-toolchain-version=2019
$ make images
This will build the release configuration under ./build/windows-x86_64-server-release/
  1. 首先安装Cygwin,Visual studio community 2019(安装目录一定不要带空格,如果有空格,请重装),JDK 19以上

Cygwin需要安装autoconf, binutils, cpio, diffutils, file, gawk, gcc-core, make, m4, unzip, zip这几个包

JDK19可以在这个目录安装Java Download | Java 7, Java 8, Java 11, Java 13, Java 15, Java 17, Java 19 - Linux, Windows & macOS (azul.com)

通过git命令,下载源码到本地文件夹

git config --global core.autocrlf false

git clone git@github.com:JetBrains/JetBrainsRuntime.git

  1. 在windows终端以管理员的方式运行下面的几个命令:

"D:\MSDN\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
"D:\cygwin64\bin\mintty.exe" /bin/bash -l

请自行替换上面的安装目录

  1. 进入Cygwin目录后,运行下面四个命令:

$ cd JetBrainsRuntime
$ git checkout main
$ bash configure --with-toolchain-version=2019
$ make images
  1. 运行bash configure --with-toolchain-version=2019 命令,可能会碰到下面几个问题:

  • cl.exe error D8003 (missing source filename) when building。一定要运行上面第二点的vcvarsall.bat命令

  • 如果出现找不到一些DLL的情况,可以再重新安装下visual studio 2019的professional或者community版本

  • Visual Studio安装目录,或者path目录有空格的。如果出现failure的字样,可以适当修改,如果不好改,建议重装换没有空格的目录

  • Target CPU mismatch. We are building for x86_64 but CL is for ""; expected "x64"

打开make/autoconf/toolchain.m4,找到相应的字串Target CPU mismatch,有两个办法:

注释这一段if 把AC_MSG_ERROR改成AC_MSG_RESULT

  • 碰到最后以这个问题结尾的,

make[1]: *** [/cygdrive/g/xiaopeng/jdk/JetBrainsRuntime/make/Init.gmk:320:main] 错误 2

make: *** [/cygdrive/g/xiaopeng/jdk/JetBrainsRuntime/make/Init.gmk:186:images] 错误 2

请到JetBrainsRuntime\build\windows-x86_64-server-release\make-support\failure-logs查看具体报错,将utf8格式,改成utf8 with bom保存,我目前遇到了下面大概20个左右文件修改。

src\java.desktop\share\native\libfreetype\src\autofit\afblue.c

src\java.desktop\share\native\libfreetype\src\autofit\afscript.h

jdk\jetbrainsruntime\src\java.desktop\share\native\libharfbuzz\hb.hh

g:\xiaopeng\jdk\jetbrainsruntime\src\java.desktop\share\native\libharfbuzz\hb-style.h(1)

g:\xiaopeng\jdk\jetbrainsruntime\src\java.desktop\share\native\libharfbuzz\hb-ot-layout-common.hh(912)

g:\xiaopeng\jdk\jetbrainsruntime\src\java.desktop\share\native\libfreetype\src\sfnt\ttload.c(1):

  1. 编译成功后,进入build/windows-x86_64-server-release目录,可以看到编译的目录

在bin目录下面可以看到编译成功的java.exe和javac.exe等文件

相关内容

热门资讯

Python|位运算|数组|动... 目录 1、只出现一次的数字(位运算,数组) 示例 选项代...
张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...