博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mac OSX 10.10 Yosemite编译OpenJDK 9
阅读量:6042 次
发布时间:2019-06-20

本文共 6428 字,大约阅读时间需要 21 分钟。

hot3.png

在Mac OSX 10.10系统上编译了下OpenJDK9,以下仅是个人安装记录,供参考。


  • 编译时间:2015-06-13

  • 系统版本:Mac OS X Yosemite 10.10.4

  • 编译OpenJDK版本:JDK 9

  • 相关软件版本:

        XCode版本:XCode6-Beat4    Version 6.0 (6A267n)

        JDK版本:1.8.0_45

        软件管理工具:brew

        Xquartz(X11):2.7.7


参考资料:

  •     

  •     

  •     

  •     


编译前期准备:

  • 大致了解官网系统要求:

  • 源码下载工具安装(此处采用Mercurial工具[OpenJDK的版本管控工具]从官网下载):

安装参考资料:

    

    

本机安装脚本:

安装:

$ brew install mercurial

若link失败,则:

    

$ sudo brew link mercurial

验证版本不低于2.6.3:hg version

安装后版本3.0.2,改为官网下载安装3.4.1了

  • 安装ccache提高编译速度

$ brew search ccache        $ brew install ccache

  • 安装freetype(编译时需要):

brew install freetype

安装失败,提示依赖的libpng无法下载。手工安装:

下载libpng最新版1.6.17()并解压:

$ pwd$ cd ./libpng-1.6.17$ ./configure --prefix=/usr/local/libpng-1.6.17$ make$ make install$ cd /usr/local/$ ln -s libpng-1.6.17 /usr/local/libpng$ brew install freetype


  • 获取JDK源码:

$ mkdir OpenJDK9;cd OpenJDK9$ hg clone  $ cd dev$ chmod u+x get_source.sh$ ./get_source.sh


编译配置:

$  bash ./configure --help=short$  bash ./configure --enable-debug --with-target-bits=64...====================================================A new configuration has been successfully created inOpenJDK9/jdk9/build/macosx-x86_64-normal-server-fastdebugusing configure arguments '--enable-debug --with-target-bits=64'.Configuration summary:* Debug level:    fastdebug* HS debug level: fastdebug* JDK variant:    normal* JVM variants:   server* OpenJDK target: OS: macosx, CPU architecture: x86, address length: 64Tools summary:* Boot JDK:       java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)  (at /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home)* Toolchain:      clang (clang/LLVM)* C Compiler:     Version Apple LLVM version 6.0 (clang-600.0.41.2) (based on LLVM 3.5svn) Target: x86_64-apple-darwin14.4.0 Thread model: posix (at /usr/bin/clang)* C++ Compiler:   Version Apple LLVM version 6.0 (clang-600.0.41.2) (based on LLVM 3.5svn) Target: x86_64-apple-darwin14.4.0 Thread model: posix (at /usr/bin/clang++)Build performance summary:* Cores to use:   2* Memory limit:   4096 MB

编译:

$ make...OpenJDK9/jdk9/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m:387:29: error: sending 'id
' to parameter of incompatible type 'id
' [-Werror]        [NSApp setDelegate: applicationDelegate];                            ^~~~~~~~~~~~~~~~~~~/System/Library/Frameworks/Foundation.framework/Headers/NSFileManager.h:109:47: note: passing argument to parameter 'delegate' here@property (assign) id 
 delegate NS_AVAILABLE(10_5, 2_0);                                              ^1 error generated.make[3]: *** [OpenJDK9/jdk9/build/macosx-x86_64-normal-server-fastdebug/support/native/java.desktop/libosxapp/NSApplicationAWT.o] Error 1make[2]: *** [java.desktop-libs] Error 2make[2]: *** Waiting for unfinished jobs....

解决办法如下或者替换XCode版本为6.3.2或者5.几的:

//OpenJDK9/jdk9/jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m//387行改成:    if (NSApp != nil) {        //[NSApp setDelegate: applicationDelegate];        [(NSApplication*)NSApp setDelegate: applicationDelegate];        if (applicationDelegate && qad) {            [qad processQueuedEventsWithTargetDelegate: applicationDelegate];            qad = nil;        }    }

重新编译:

$ make clean$ make...OpenJDK9/jdk9/jdk/src/java.desktop/share/native/libawt/awt/image/awt_parseImage.c:855:33: error: comparison of array 'rasterP->sppsm.offsets' not equal to a null pointer is always true [-Werror,-Wtautological-pointer-compare]        else if (rasterP->sppsm.offsets != NULL) {                 ~~~~~~~~~~~~~~~^~~~~~~    ~~~~1 error generated.make[3]: *** [OpenJDK9/jdk9/build/macosx-x86_64-normal-server-fastdebug/support/native/java.desktop/libawt/awt_parseImage.o] Error 1make[2]: *** [java.desktop-libs] Error 2make[2]: *** Waiting for unfinished jobs....ERROR: Build failed for target 'default' in configuration 'macosx-x86_64-normal-server-fastdebug' (exit code 2) Hint: If caused by a warning, try configure --disable-warnings-as-errors make[1]: *** [main] Error 2make: *** [default] Error 2

解决办法:

//OpenJDK9/jdk9/jdk/src/java.desktop/share/native/libawt/awt/image/awt_parseImage.c//855行改成如下的(注释掉IF条件):    else /** if (rasterP->sppsm.offsets != NULL) **/ {

再重新编译:

$ make clean$ make...1 error generated.make[3]: *** [OpenJDK9/jdk9/build/macosx-x86_64-normal-server-fastdebug/support/native/java.desktop/libsplashscreen/splashscreen_sys.o] Error 1make[3]: *** Waiting for unfinished jobs....make[2]: *** [java.desktop-libs] Error 2ERROR: Build failed for target 'default' in configuration 'macosx-x86_64-normal-server-fastdebug' (exit code 2) Hint: If caused by a warning, try configure --disable-warnings-as-errors make[1]: *** [main] Error 2make: *** [default] Error 2

解决办法:

//OpenJDK/openJDK9/jdk9/jdk/src/java.desktop/macosx/native/libsplashscreen/splashscreen_sys.m//注释掉278行://[image setScalesWhenResized:YES];

再编,没出现错误了:

$ make clean$ make...Finished building target 'default' in configuration 'macosx-x86_64-normal-server-fastdebug'


  • 编译结果初步验证:

$ cd ./build/*$ lsMakefile		configure-support	jdkbootcycle-spec.gmk	configure.log		make-supportbuild.log		configure.log.old	spec.gmkbuild.log.old		hotspot			supportbuildtools		hotspot-spec.gmkcompare.sh		images$ cd jdk/bin$ ./java -versionopenopenjdk version "1.9.0-internal-fastdebug"OpenJDK Runtime Environment (build 1.9.0-internal-fastdebug-stxpons_2015_06_13_16_14-b00)OpenJDK 64-Bit Server VM (build 1.9.0-internal-fastdebug-stxpons_2015_06_13_16_14-b00, mixed mode)
  • 参考JDK源码目录下README-builds.html文件里的Testing章节:

    哎呀妈啊,都折腾半天了,还来啊,要先安装jtreg,懒得折腾了。。。下回有空再按官方方法验证。。。

$ cd test$ make PRODUCT_HOME=`pwd`/../build/*/images/j2sdk-image all/Applications/Xcode.app/Contents/Developer/usr/bin/make -k -C  ../jdk/test  TEST=jdk_all jdk_allecho "Running tests: jdk_all"Running tests: jdk_allfor each in jdk_all; do \        /Applications/Xcode.app/Contents/Developer/usr/bin/make -j 1 TEST_SELECTION=":$each" UNIQUE_DIR=$each jtreg_tests; \donemake[2]: *** No rule to make target `OpenJDK9/jdk9/test/../build/macosx-x86_64-normal-server-fastdebug/images/j2sdk-image', needed by `jtreg_tests'.make[2]: *** No rule to make target `/java/re/jtreg/4.1/promoted/latest/binaries/jtreg', needed by `/java/re/jtreg/4.1/promoted/latest/binaries/jtreg/bin/jtreg'.make[2]: Target `jtreg_tests' not remade because of errors.make[1]: *** [jdk_all] Error 2make: *** [jdk_all] Error 2

转载于:https://my.oschina.net/u/1043802/blog/466423

你可能感兴趣的文章
[Hadoop]MapReduce多输出
查看>>
Android Activity详解(一)
查看>>
我的友情链接
查看>>
SERVLET容器简介与JSP的关系
查看>>
《服务器SSH Public Key认证指南》-补充
查看>>
我的友情链接
查看>>
Java break continue return 的区别
查看>>
算法(Algorithms)第4版 练习 1.3.4
查看>>
jquery easyUI checkbox复选项获取并传后台
查看>>
浅析NopCommerce的多语言方案
查看>>
设计模式之简单工厂模式
查看>>
C++中变量的持续性、链接性和作用域详解
查看>>
2017 4月5日上午
查看>>
Google Chrome开发者工具
查看>>
第一阶段冲刺报告(一)
查看>>
使用crontab调度任务
查看>>
【转载】SQL经验小记
查看>>
zookeeper集群搭建 docker+zk集群搭建
查看>>
Vue2.5笔记:Vue的实例与生命周期
查看>>
论JVM爆炸的几种姿势及自救方法
查看>>