`
jimmee
  • 浏览: 538697 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Mac OSX 10.10 Yosemite编译OpenJDK 8

阅读更多

编译时间: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的编译器,所以后一篇文章仅仅用作参考。

 

0
5
分享到:
评论

相关推荐

    OS X 10.10 Yosemite VMware Image sn

    总之,"OS X 10.10 Yosemite VMware Image sn"是针对那些希望在非Mac硬件上体验或开发针对Mac平台的应用的用户的资源。正确使用这个镜像文件需要遵循上述步骤,并确保所有必要的软件许可证和硬件兼容性条件得到满足...

    OSX 10.10 可用TextMate2.0

    在OSX 10.10 Yosemite上运行的TextMate 2.0,是专为此版本系统优化编译的,确保了软件的稳定性和性能。这包括对Yosemite界面风格的适应,以及与该系统核心组件的兼容性,提供顺畅的操作体验。 3. **安装与使用** ...

    Mac osx10.10.x HD7770kext

    标题中的“Mac osx10.10.x HD7770kext”指的是适用于苹果Mac OS X 10.10(Yosemite)操作系统的AMD Radeon HD 7770图形卡驱动扩展。在Mac OS X系统中,"kext"是Kernel Extension的缩写,它是操作系统内核的一部分,...

    磊科nw336无线网卡 Mac OSX 10.10可用驱动

    磊科nw336性能不错,是黑苹果的好选择,但是OSX进入到10.10之后,磊科官网的驱动并未跟进,目前仅支持到10.9 很辛苦的在国外网站找到这枚驱动,成功在10.10.5里面测试过,可完美驱动nw336,理论上同芯片的都可以用。

    hilink在OSX10.10以上使用的必备文件

    这是苹果公司为其Mac系列电脑开发的操作系统,10.10版被称为"Yosemite"。随着系统的更新,新版本可能会对某些旧的或者非官方支持的应用程序提出更高的要求,因此对于hilink这种第三方连接工具,可能需要更新或适配的...

    (支持osx 10.10 )Chameleon-2.2svn-r2380.pkg.zip

    Yosemite (OSX 10.10)是苹果在2014年发布的一个操作系统版本,引入了全新的设计语言和多项功能更新。Chameleon 2.2svn-r2380专为此版本优化,意味着它可以顺利引导并支持OSX 10.10在非原装Mac硬件上的运行。 4. **...

    开SSD Trim在OSX10.10

    标题中的“开SSD Trim在OSX10.10”指的是在苹果的Mac操作系统OS X Yosemite (10.10) 上启用固态硬盘(SSD)的Trim功能。Trim是SSD的一项关键技术,它有助于保持SSD的性能和寿命。在传统的机械硬盘(HDD)上,磁盘清理...

    osx 10.10.5--osx 10.13.6原版镜像

    - **扁平化设计**:osx 10.10 Yosemite引入了全新的用户界面设计,采用了更加简洁、扁平化的风格,与iOS保持一致的设计语言。 - **连续互通功能**:允许Mac用户在设备之间无缝切换应用和服务,如通过iPhone接听电话...

    MacVim7.4安装包

    MacVim7.4.622,支持OSX10.10 Yosemite

    USB 串口 PL2303 MAC OSX 驱动

    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(内包含windows、linux、OSX 10.10).zip

    欢迎使用时间计算小工具0.2.4.r1:这个小工具可以根据自己输入的时间段长,累加计算总共是多长时间,...\n\n您的当前程序运行日志文件名:" + log + "\n(关于默认主目录:在起始运行的目录中,mac:默认在用户文件夹下

    esl-erlang_19.3_osx_10.10_amd64.dmg

    标题“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

    openjdk的mac版本:openjdk-11.0.2_osx-x64_bin.tar.gz,因为oracle jdk 11已经不能免费商业使用,故使用openjdk版本。官网下载较慢,转存于此。注意:解压后需要放到/Library/Java/JavaVirtualMachines/目录下才能...

    PL2303_Mac OSX Drv_V1.6.2_20190723.rar

    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 ...

    mruby-cross-compile-on-mac-osx:在 Mac OSX 上交叉编译 mruby 的 osx、linux 或 win32 二进制文件

    在 Mac OSX 上为 mruby 交叉编译 在 Mac OSX 上交叉编译 mruby 的 osx、linux 或 win32 二进制文件。 通过mrbgems下载和安装 下载mrbgem git clone ...

    esl-erlang_19.3~osx~10.10_amd64.dmg

    esl-erlang_19.3~osx~10.10_amd64.dmg

    luyten-osx java反编译软件 Mac 很好用

    总的来说,Luyten-osx是Mac用户的一个强大工具,能够帮助开发者和研究人员查看和理解Java字节码。虽然反编译结果可能无法完全复原原始源代码,但提供的信息足以对代码逻辑有基本的理解。对于从Windows转向Mac的用户...

    ProjectTimeStretcherHorizontal:我用处理草图重写了很多玩过的 openframeworks。 这显示了一种对实时视频源进行垂直狭缝扫描 (LeftRight) 的方法。 此软件仅在 Mac OSX 10.10 上测试

    该软件仅在 Mac OS X Yosemite 和 0.8.4 版本的 openframeworks 上测试。 下载 openframeworks ( )。 通过推荐方式( )创建一个新项目。 在新的项目文件夹中,将 src/ 目录替换为此处给出的目录。 ps 仍然存在...

    最新mac版本android反编译工具包

    在本工具包中,提供的是JD-GUI的osx-1.6.6版本,专为Mac用户设计。 这些工具的组合使用流程大致如下: 1. 使用Apktool对APK进行解包,得到原始的资源文件和Smali代码。 2. 将APK中的.dex文件通过dex2jar转换为.jar...

Global site tag (gtag.js) - Google Analytics