在Windows平台编译OpenJdk8

在windows 11上编译open jdk1.8及遇到问题解决 编译过程中遇到的错误,可以通过错误提示(控制台和config.log日志),定位到base_dir\common\autoconf\generated-configure.sh 中的位置,然后看干了什么,将前后文打印出来,看有没有解决方式。2. D:\projects\java\openjdk8-master\hotspot/make/windows/get_msc_ver.sh: 第 65 行:[: □□□□ x64 □□ Microsoft ® C/C++ □Ż□□□。我安装的时3.4.1版本。 阅读详情

学习了一段时间OpenJdk源码后,需要实践来验证自己对jvm各个组件运作机制的理解是否正确,这需要通过调试jvm来实现,而在windows平台编译openjdk是比较繁琐的,这其中遇到了一些坑,记录下build的过程以备不时之需。

前期准备

Cygwin64 

        安装cygwin后需要安装以下工具(编译jdk时make或jdk boott会调用)

        ar 、make、m4、cpio、gawk、file、zip、unzip、free

        打开cygwin安装程序 setup-x86_64.exe ,选择以上工具并安装。

Windows编译工具集

        可以通过安装vs2010或win SDK实现,我选择的是安装vs2010,编译工具集版本为v100

freetype

        它是一个用于渲染文本和字体的开源库,主要功能是将字体文件解析为矢量图形,以便在计算机屏幕上或其他设备上渲染文本。

        jdk的部分组件库会使用到它,如 awt、swing、java2d、图形引擎等。

        它需要单独编译,这里不要选择太新的版本,因为jdk8比较老了,可能会存在api兼容的问题,我这里选择的是freetype 3.13.2。

        这里直接编译如果提示报错  snprintf 符号不存在,这是因为vs2010较老的编译工具集不支持 snprintf 函数,打开  include/freetype/config/ftstdlib.h 文件,找到  #define ft_snprintf  snprintf,将其修改为  #define ft_snprintf  sprintf_s

 使用vs2010打开它的项目,分别编译生成动态库和静态库。

动态库

静态库

这里主要要选择下链接的vc运行库版本

动态库 -选择 多线程调试DLL(/MDd)

静态库-选择 多线程调试(/MTd)

编译完成后将生成的freetype.lib和freetype.dll放到 freetype根目录的lib文件夹中(没有则新建lib)。

配置编译环境

        这里建议使用vc环境初始化脚本来初始化(它会配置好各种cl使用的环境变量)。

        1.打开 X64工具命令行,cd /d 到 cygwin 的bin目录下并执行 

.\bash --login -i 切换到cygwin环境中,然后cd 到 jdk根目录下。

运行configure 配置脚本,它会检查编译选项并生成makefile等编译用到的相关文件。

bash ./configure --with-tools-dir=/cygdrive/e/vs2010/VC/bin/x86_amd64/ --with-target-bits=64 --with-boot-jdk=/cygdrive/e/jdk/jdk7 --with-num-cores=8 --with-freetype=/cygdrive/e/build_jdk8/freetype_2_13_2 --with-debug-level=slowdebug --with-native-debug-symbols=internal

--with-tools-dir windows平台下的编译工具集

--with-tools-dir 编译jdk用到的bootstraup jdk

--with-freetype freetype目录

--with-debug-level=slowdebug 编译级别

--with-native-debug-symbols=internal 生成的文件嵌入调试信息

以上是我的配置脚本内容,因为是用于调试目的,所以指定了生成详细的调试信息。

编译

        配置脚本运行完成后,执行  make all CONF=windows-x86_64-normal-server-slowdebug,根据机器配置可能需要一会。

        编译完成后在路径 jdk8u\build\windows-x86_64-normal-server-slowdebug\images\j2sdk-image下生成了jdk二进制文件,运行 .\bin\java -version

openjdk version "1.8.0-internal-debug"
OpenJDK Runtime Environment (build 1.8.0-internal-debug-administrator_2023_10_08_13_10-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00-debug, mixed mode)

JDK8下载安装与环境配置全指南:从零搭建Java开发环境 Java开发环境搭建是编程学习的首要步骤,其核心在于理解JDK、JRE与JVM的层级关系与协作原理。JDK作为开发工具包,包含了编译器与运行时环境,是实现Java跨平台能力的基础。在众多版本中,JDK8因其引入了Lambda表达式、Stream API等革命性特性,并作为长期支持版,成为企业级应用与面试准备的基石。本文聚焦于JDK8的下载、安装与环境变量配置,详细解析了Windows与macOS平台下的实操步骤,并针对OpenJDK发行版选择、多版本管理及常见报错问题提供了深度解决方案,帮助开发者高效搭建稳 阅读详情

相关推荐

OpenJDK1.8(1.8.0.151-1.b12) Windows64位安装包

OpenJDK是JDK的开放原始码版本,以GPL协议的形式放出。

windows系统下安装JDK8(安装JAVA环境)、安装Maven、安装tomcat、

windows系统下安装JDK8 学习JAVA,必须得安装一下JDK(java development kit java开发工具包),配置一下环境就可以学习JAVA了,下面是下载和安装JDK的教程: 一.下载 1.JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 点开链接你应该看到如下图所示的界面: 2.点击上图中箭头所指的地方,会出现下面的这个界面,此时你需要根据你的电脑系统来进行对应的版本...

林中明月间丶 3900

OpenJDK8 for Windows x64

AdoptOpenJDK 版本8U272 Java™ is the world's leading programming language and platform. AdoptOpenJDK uses infrastructure, build and test scripts to produce prebuilt binaries from OpenJDK™ class libraries and a choice of either OpenJDK or the Eclipse OpenJ9 VM.

1、Spark 2.1 源码编译支持CDH

目前CDH支持的spark版本都是1.x, 如果想要使用spark 2x的版本, 只能编译spark源码生成支持CDH的版本。一、准备工作找一台Linux主机, 由于spark源码编译会下载很多的第三方类库包, 因此需要主机能够联网。1、安装Java, 配置环境变量, 版本为JDK1.7或者以上下载地址:http://www.oracle.com/technetwork/java/jav...

weixin_30394251的博客 314

Windows 64位系统可用的OpenJDK 8运行环境安装包

这是一个专为Windows x86_64(即64位)平台打包的OpenJDK 1.8.0完整运行环境,包含Java虚拟机核心组件(如java.exe、javaw.exe、jvm.dll等)、开发工具链(javac.exe、javadoc.exe、jdb.exe、jmap.exe、jconsole.exe等)以及配套动态库(msvcr100.dll、jli.dll)和辅助程序(unpack200.exe、pack200.exe、keytool.exe、jarsigner.exe等)。支持标准Java SE 8特性,适用于需要本地部署JRE或JDK进行Java应用运行、调试、编译、打包、监控及安全配置的场景。无需额外安装Visual C++运行时(已内置msvcr100.dll),开箱即用,适合嵌入式部署、CI/CD构建节点、离线环境或轻量级开发测试使用。所有可执行文件均来自官方OpenJDK 8u源码构建,兼容主流Java 8应用程序和框架。

django drf 框架知识点(一)——serializer序列化器_用法全解

【django drf】序列化器:别名设置,全部参数序列化,自定义字段,只读只写,部分更新

qq_59344127的博客 1338

OpenJDK8 Windows编译

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34144450的博客 1167

VMware下载与安装

一、VMware下载 二、VMware安装

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 315

告别版本冲突!手把手教你配置Windows环境下的JDK多版本管理(OpenJDK8/17实战)

本文详细介绍了在Windows环境下配置JDK多版本管理的实用方案,特别针对OpenJDK8和JDK17的切换需求。通过环境变量深度配置和批处理脚本实现一键切换,有效解决版本冲突问题,提升开发效率。适合需要同时维护新旧Java项目的开发者。

weixin_30576827的博客 539

医院批量排班实战指南(三)日期列表生成与时段批量操作

在上一篇《批量排班功能实现指南(二):日期与时段设置》中,我们完成了日期范围选择和重复规则配置的界面搭建,实现了从第一步到第二步的跳转功能。现在我们已经可以选择日期范围和重复规则,但还缺少最关键的功能——根据规则生成日期列表并进行时段配置。本篇将继续深入批量排班的核心功能——日期列表生成与时段批量操作。根据日期范围和重复规则智能生成日期列表为每个日期配置上午、下午、夜诊时段批量时段操作提升配置效率日期列表的展示与管理。

低代码布道师的博客 1346

基于MATLAB实现语音信号MFCC特征提取(附完整代码)

你有没有想过你的智能手机是如何理解语音指令的?或者 Alexa 和 Siri 等语音助手如何处理您的命令?这种卓越能力背后的机制在很大程度上归功于一种称为 Mel 频率倒谱系数 (MFCC) 的方法。语音识别技术允许机器解释人类语音,将口语转换为计算机可以操纵的格式。这项技术对于开发交互式和响应式 AI 至关重要,例如声控助手、自动化客户服务系统和实时翻译服务。MFCC 代表 Mel 频率倒谱系数。这是用于自动语音和说话人识别的功能。

baidu_34971492的博客 1313

OpenJFX编译填坑之路

用于jdk8中OpenJFX的编译 Gradle 设置代理 windows/linux下.gradle/下init.gradle gradle.properties init.gradle 这个文件就是用来配仓库的,一个不行换一个 allprojects{ repositories{ maven{ url 'http://maven.aliyun.c...

weixin_34062469的博客 2685

麒麟操作系统提示“默认密钥环已上锁”的解决办法

麒麟操作系统提示“默认密钥环已上锁”的解决办法

太极淘的博客 1万+

openjdk-jdk8-b109 hotspot虚拟机启动过程分析_1

基于OpenJdk 标签 jdk8-b109版本分析HotSpot是由Oracle开发的Java虚拟机(JVM)的一种实现,也是使用最广泛的JVM之一。

vs2008ASPNET的专栏 403

【linux】解决报错:Network error: Connection refused

【linux】解决报错:Network error: Connection refused

weixin_44502754的博客 4936

手把手教你学Simulink实例--基于Simulink的电动汽车无线充电效率优化仿真

​市场规模:2025年全球无线充电市场规模将达$27亿(MarketsandMarkets数据)​技术标准Qi v1.3(最高150W)WiTricity(200W动态功率)ISO 17163(道路车辆无线充电)​节能效果:每kWh充电减少120W损耗(按每天8小时)​成本分析线圈成本:35vs58(传统方案)效率提升带来的续航增加:15km/100km。

xiaoheshang_123的博客 343

OpenJDK1.8.0_181资源文件下载介绍:Java开发环境的开源解决方案

OpenJDK1.8.0_181资源文件下载介绍:Java开发环境的开源解决方案 【下载地址】OpenJDK1.8.0_181资源文件下载介绍 OpenJDK 1.8.0_181 是一个专为Windows x86_64系统设计的Java开发工具包,由Red Hat维护并提供稳定支持。该版本包含了Java运行时环境、基础类...

gitblog_06772的博客 616

QCC304x系列开发教程(基础篇)之2.1-QCC3040之开发环境搭建

一、安装MDE 1.解压qualcomm_mde.win.2.4_installer_2.4.1.4压缩包,安装MDE_WIN_2.4.1.4_x64.exe,路径自定义 点击NEXT, 安装完成后,点击Finish. 完成安装后,桌面生成快捷方式

心跳包的博客 6079

为何MAC的JDK/JRE大小这么小?

  以吾编译的OpenJDK8-u272为例: LINUX:258M,195M WINDOWS:202M,106M MAC:135M,71.6M   这是为何?

柳鲲鹏 846

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【亲测免费】 探索稳定基石:OpenJDK 1.8最高版为Windows 64位而生

探索稳定基石:OpenJDK 1.8最高版为Windows 64位而生 【下载地址】openjdk1.8最高版本forWindows64位 本仓库提供了OpenJDK 1.8的最高版本,专为Windows 64位系统设计。OpenJDK(Open Java Development Kit)是Java平台的一个开源实现,广...

gitblog_09706的博客 645

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JavaQuestPlayer:终极免费的Java游戏引擎与QSP播放器解决方案

想要轻松运行和开发QSP游戏吗?JavaQuestPlayer就是你的理想选择!这款基于JavaSE开发的专业游戏引擎,不仅能够完美运行各类QSP游戏,还提供了强大的开发工具链,让你从游戏玩家变身游戏开发者。🎮 ## 为什么选择JavaQuestPlayer? ### 新手友好的游戏运行体验 JavaQuestPlayer让QSP游戏运行变得异常简单。无论你是初次接触这类游戏的新手,还是资深

gitblog_00301的博客 974

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

JavaQuestPlayer终极指南:跨平台QSP游戏开发播放一体化解决方案

JavaQuestPlayer是一款基于JavaSE开发的跨平台QSP游戏播放器和开发工具,为游戏爱好者和开发者提供完整的解决方案。这个强大的工具不仅能让您畅玩各类QSP游戏,还能为您提供完整的游戏开发环境,真正实现播放与开发的无缝衔接。 ## 🎯 为什么选择JavaQuestPlayer? JavaQuestPlayer的核心优势在于其**一体化设计理念**——将游戏播放器与开发工具完美融

gitblog_00185的博客 237

JavaQuestPlayer:一站式QSP游戏开发与播放平台终极指南

JavaQuestPlayer是一款基于JavaSE开发的跨平台QSP游戏播放器和开发工具,为游戏爱好者和开发者提供完整的解决方案。这个强大的工具不仅能让您畅玩各类QSP游戏,还能为您提供完整的游戏开发环境,真正实现播放与开发的无缝衔接。无论您是想要体验精彩QSP游戏的玩家,还是希望创作自己游戏作品的开发者,JavaQuestPlayer都能满足您的需求。 ## 🎯 为什么选择JavaQues

gitblog_00356的博客 727

5步快速上手JavaQuestPlayer:跨平台QSP游戏播放与开发一体化解决方案

JavaQuestPlayer是一款基于JavaSE开发的强大跨平台QSP游戏播放器和开发工具,为游戏爱好者和开发者提供完整的解决方案。这款工具不仅能让您畅玩各类QSP游戏,还能为您提供完整的游戏开发环境,真正实现播放与开发的无缝衔接。无论您是想要体验精彩QSP游戏的玩家,还是希望创作自己游戏作品的开发者,JavaQuestPlayer都能满足您的需求,让QSP游戏开发变得简单高效。 ## 🎮

gitblog_00076的博客 435

JavaQuestPlayer:你的跨平台QSP游戏终极解决方案

你是否曾梦想过在Windows和Linux上无缝运行QSP游戏?是否希望有一个既能玩游戏又能开发游戏的完整工具?JavaQuestPlayer正是为你量身打造的全能QSP游戏平台。这款基于JavaSE开发的软件不仅是一个游戏播放器,更是一个完整的开发环境,让你轻松开启QSP游戏之旅。 ## 🎮 从玩家到开发者:一站式游戏体验之旅 ### 第一步:轻松上手,即刻畅玩 对于初次接触QSP游戏的

gitblog_01100的博客 189

JavaQuestPlayer 零基础完整指南:5分钟跑起一个QSP游戏播放器

JavaQuestPlayer 是一个基于 Java 开发的跨平台 QSP 游戏播放器兼开发工具,支持 Windows 7 及以上和主流 Linux 系统,用一个窗口同时搞定游戏库管理和 qsrc 源码编译。对玩家来说,它解决"手里的 .qsp 文件在 Windows 或 Linux 上去哪儿运行"的问题;对开发者来说,改完代码不用反复落盘就能立刻测试。体验和创作放在同一个窗口里,它具体能干哪些事

gitblog_00283的博客 456
上一篇: .Net Core 动态加载和卸载程序集
下一篇: openjdk-jdk8-b109 hotspot虚拟机启动过程分析_1
IT回忆录
博客等级 码龄16年 42粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值