编译时间:2016-04-03
系统版本:Mac OS X Yosemite 10.10.2
编译OpenJDK版本:JDK8
相关软件版本:
• XCode版本:Version 5.1.1 (5B1008)
• JDK版本:1.8.0_51
• 软件管理工具:brew
• Xquartz(X11):2.5.3
1. 安装必须的软件,如git 和 mercurial (hg)
2. 安装XCode
3. 安装X11,系统默认好像是没有这个东西,需要下载安装XQuartz,然后link下
sudo ln -s /usr/X11/include/X11 /usr/include/X11
4. link llvm-gcc和llvm-g++,由于xcode目录下已经没有llvm-gcc和llvm-g++程序,而build jdk的时候会用到,所以需要link过去
sudo ln -s /usr/bin/llvm-g++ /Applications/Xcode.app/Contents/Developer/usr/bin/llvm-g++ sudo ln -s /usr/bin/llvm-gcc /Applications/Xcode.app/Contents/Developer/usr/bin/llvm-gcc
5. 下载jdk源码
hg clone http://hg.openjdk.java.net/jdk8/jdk8 YourOpenJDK cd YourOpenJDK bash ./get_source.sh
hg的方式下载太慢,而且网络容易出错,我是直接下载的zip文件,地址:http://download.java.net/openjdk/jdk8
6. configure,可以参考下YourOpenJDK目录下的README,我直接build release版本的
sh configure --with-target-bits=64
configure过程会检查一些配置,然后在YourOpenJDK/build目录下会有macosx-x86_64-normal-server-release目录。这个过程中遇到一个问题:
configure: error: GCC compiler is required
对于这个问题,我查到是YourOpenJDK/common/autoconf/generated-configure.sh里边校验抛出,我直接找到下边文本出现的两个地方给注释掉了......
as_fn_error $? "GCC compiler is required. Try setting --with-tools-dir." "$LINENO" 5
7. make,直接./make all的时候遇到了很多问题
遇到了这个,看是clang的参数问题:
clang: error: unknown argument: '-fcheck-new' [-Wunused-command-line-argument-hard-error-in-future]
于是直接打开YourOpenJDK/hotspot/make/bsd/makefiles/gcc.make,把这行(line 193)给注释掉:
#CFLAGS += -fcheck-new
但是继续build还是遇到了很多问题,诸如:
/Users/jme/workspace/jdk8/hotspot/src/share/vm/utilities/globalDefinitions.hpp:754:11: error: enumeration values 'number_of_states' and 'ilgl' not handled in switch [-Werror,-Wswitch] switch (state) { ^ /Users/jme/workspace/jdk8/hotspot/src/share/vm/utilities/globalDefinitions.hpp:1108:24: error: implicit conversion changes signedness: 'uintx' (aka 'unsigned long') to 'intptr_t' (aka 'long') [-Werror,-Wsign-conversion] if (!is_power_of_2(s)) basic_fatal("s must be a power of 2"); ~~~~~~~~~~~~~ ^
首先需要hotspot/make/bsd/makefiles/gcc.make里加入Clang5.1的逻辑:
ifeq ($(USE_CLANG), true) # Clang 4.2 ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 2), 1) OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT) OPT_CFLAGS/unsafe.o += -O1 endif # Clang 5.0 ifeq ($(shell expr $(CC_VER_MAJOR) = 5 \& \( $(CC_VER_MINOR) = 0 \| $(CC_VER_MINOR) = 1 \) ), 1) OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT) OPT_CFLAGS/unsafe.o += -O1 OPT_CFLAGS/graalCompilerToVM.o += -O1 endif
需要将make的执行增加如下参数:
make CC=clang COMPILER_WARNINGS_FATAL=false LFLAGS='-Xlinker -lstdc++' USE_CLANG=true LP64=1 LANG=C ALT_BOOTDIR=/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/ ARCH_DATA_MODEL=64 HOTSPOT_BUILD_JOBS=8
其中跟Clang相关的参数是 CC=clang COMPILER_WARNINGS_FATAL=false LFLAGS='-Xlinker -lstdc++' USE_CLANG=true。build加上这些参数后可以避开Clang的严格检查。
最后,下面这个文件要进行修改,参考:http://cr.openjdk.java.net/~henryjen/jdk9/8033057/webrev/hotspot.changeset
YourOpenJDK/hotspot/src/share/vm/code/relocInfo.hpp
8. 执行最后的构建,可以看到构建成功后的日志:
----- Build times ------- Start 2016-04-03 14:26:01 End 2016-04-03 14:35:05 00:00:39 corba 00:02:57 hotspot 00:00:21 jaxp 00:00:35 jaxws 00:04:30 jdk 00:00:00 langtools 00:09:04 TOTAL ------------------------- Finished building OpenJDK for target 'default' WARNING: You have the following ALT_ variables set: ALT_PARALLEL_COMPILE_JOBS=6 ALT_BOOTDIR=/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/ ALT_OUTPUTDIR=/Users/jme/workspace/jdk8/build ALT_ variables are deprecated and will be ignored. Please clean your environment.
9. 其他说明
本次构建,主要参考了文章:
Mac OSX 10.9 上build openjdk8和openjdk7
同时也参考了老外的一篇文章:
Building OpenJDK 8 on Mac OS X Mavericks
后一篇文章主要是针对gcc的问题和freetype的问题进行了原因说明,我一开始是按照这个操作,但最终的编译由于gcc等版本冲突,是行不通的,最终只能采用clang的编译器,所以后一篇文章仅仅用作参考。
相关推荐
总之,"OS X 10.10 Yosemite VMware Image sn"是针对那些希望在非Mac硬件上体验或开发针对Mac平台的应用的用户的资源。正确使用这个镜像文件需要遵循上述步骤,并确保所有必要的软件许可证和硬件兼容性条件得到满足...
在OSX 10.10 Yosemite上运行的TextMate 2.0,是专为此版本系统优化编译的,确保了软件的稳定性和性能。这包括对Yosemite界面风格的适应,以及与该系统核心组件的兼容性,提供顺畅的操作体验。 3. **安装与使用** ...
标题中的“Mac osx10.10.x HD7770kext”指的是适用于苹果Mac OS X 10.10(Yosemite)操作系统的AMD Radeon HD 7770图形卡驱动扩展。在Mac OS X系统中,"kext"是Kernel Extension的缩写,它是操作系统内核的一部分,...
磊科nw336性能不错,是黑苹果的好选择,但是OSX进入到10.10之后,磊科官网的驱动并未跟进,目前仅支持到10.9 很辛苦的在国外网站找到这枚驱动,成功在10.10.5里面测试过,可完美驱动nw336,理论上同芯片的都可以用。
这是苹果公司为其Mac系列电脑开发的操作系统,10.10版被称为"Yosemite"。随着系统的更新,新版本可能会对某些旧的或者非官方支持的应用程序提出更高的要求,因此对于hilink这种第三方连接工具,可能需要更新或适配的...
Yosemite (OSX 10.10)是苹果在2014年发布的一个操作系统版本,引入了全新的设计语言和多项功能更新。Chameleon 2.2svn-r2380专为此版本优化,意味着它可以顺利引导并支持OSX 10.10在非原装Mac硬件上的运行。 4. **...
标题中的“开SSD Trim在OSX10.10”指的是在苹果的Mac操作系统OS X Yosemite (10.10) 上启用固态硬盘(SSD)的Trim功能。Trim是SSD的一项关键技术,它有助于保持SSD的性能和寿命。在传统的机械硬盘(HDD)上,磁盘清理...
MacVim7.4.622,支持OSX10.10 Yosemite
- **扁平化设计**:osx 10.10 Yosemite引入了全新的用户界面设计,采用了更加简洁、扁平化的风格,与iOS保持一致的设计语言。 - **连续互通功能**:允许Mac用户在设备之间无缝切换应用和服务,如通过iPhone接听电话...
For Mac OS X Yosemite (version 10.10) For Mac OS X Mavericks (version 10.9) For PL2303 H/HX/HXD/EA/RA/SA/TA/TB chip versions For Prolific USB VID_067B&PID;_2303 Only Includes Driver Installation ...
欢迎使用时间计算小工具0.2.4.r1:这个小工具可以根据自己输入的时间段长,累加计算总共是多长时间,...\n\n您的当前程序运行日志文件名:" + log + "\n(关于默认主目录:在起始运行的目录中,mac:默认在用户文件夹下
标题“esl-erlang_19.3_osx_10.10_amd64.dmg”指的是一个特定版本的Erlang编程环境的安装镜像文件,由Erlang Solutions Limited(ESL)发布,适用于Apple macOS 10.10 Yosemite操作系统,并且是为64位AMD处理器设计...
openjdk的mac版本:openjdk-11.0.2_osx-x64_bin.tar.gz,因为oracle jdk 11已经不能免费商业使用,故使用openjdk版本。官网下载较慢,转存于此。注意:解压后需要放到/Library/Java/JavaVirtualMachines/目录下才能...
For Mac OS X Yosemite (version 10.10) For Mac OS X Mavericks (version 10.9) For PL2303 H/HX/HXD/EA/RA/SA/TA/TB chip versions For Prolific USB VID_067B&PID;_2303 Only Includes Driver Installation ...
在 Mac OSX 上为 mruby 交叉编译 在 Mac OSX 上交叉编译 mruby 的 osx、linux 或 win32 二进制文件。 通过mrbgems下载和安装 下载mrbgem git clone ...
esl-erlang_19.3~osx~10.10_amd64.dmg
总的来说,Luyten-osx是Mac用户的一个强大工具,能够帮助开发者和研究人员查看和理解Java字节码。虽然反编译结果可能无法完全复原原始源代码,但提供的信息足以对代码逻辑有基本的理解。对于从Windows转向Mac的用户...
该软件仅在 Mac OS X Yosemite 和 0.8.4 版本的 openframeworks 上测试。 下载 openframeworks ( )。 通过推荐方式( )创建一个新项目。 在新的项目文件夹中,将 src/ 目录替换为此处给出的目录。 ps 仍然存在...
在本工具包中,提供的是JD-GUI的osx-1.6.6版本,专为Mac用户设计。 这些工具的组合使用流程大致如下: 1. 使用Apktool对APK进行解包,得到原始的资源文件和Smali代码。 2. 将APK中的.dex文件通过dex2jar转换为.jar...