我是靠谱客的博主 忧虑裙子,最近开发中收集的这篇文章主要介绍AlpineLinux-3.16编译openjdk17,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

AlpineLinux-3.16编译openjdk17

若想在alpine-3.16上编译,必须C++版本必须低于11或使用版本低于1.2.3的musl-dev,否则只有通过修改jdk源码(大量)才能编译成功.1

释放community源

su -c 'vi /etc/apk/repositories' 删除community url前面的#
su -c 'apk update'

获取jdk17-dev源码

su -c 'apk add --no-cache git'
git clone https://github.com/openjdk17u-dev.git && cd jdk17u-dev

安装openjdk16作为Boot-jdk

需要community源

su -c 'apk add --no-cache openjdk16'

安装编译需要的软件包

su -c 'apk add --no-cache bash autoconf file make zip 
gcc g++ 
libxtst-dev libxt-dev libxrender-dev libxrandr-dev 
cups-dev fontconfig-dev alsa-lib-dev'

安装musl-dev 1.2.24

su -c 'apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/v3.15/main musl-dev=1.2.2-r7'

设置编译参数

bash configure --with-debug-level=fastdebug

可以先通过 bash configure --help了解更多参数选项的含义

编译jdk源码

make images

或者

make all

简单测试编译成果

build/linux-x86_64-server-fastdebug/jdk/bin/java -version

或者

build/linux-x86_64-server-fastdebug/images/jdk/bin/java -version
openjdk version "17.0.5-internal" 2022-07-23
OpenJDK Runtime Environment (fastdebug build 17.0.5-internal+0-adhoc.waisam.jdk17u-dev)
OpenJDK 64-Bit Server VM (fastdebug build 17.0.5-internal+0-adhoc.waisam.jdk17u-dev, mixed mode, sharing)

只有jdk目录的java可用于调试, images内的不行


  1. musl更新带来的影响

    alpine-3.16 因为自带的标准C库musl更新到1.2.3,在使用C++11或以上版本时, 会将NULL定义为nullptr2,类型为:std:nullptr_t
    而alpine-3.16的默认C++版本为C++143,这将使函数reinterpret_cast<oop*>(NULL)无法转型,导致编译失败(笔者使用3.15的源重新安装了musl-dev 1.2.2-r7),自己编译GCC则需要数个小时) ↩︎

  2. musl-commit:

    define NULL as nullptr when used in C++11 or later ↩︎

  3. 查看C++版本

    gcc -dM -E -x c++  /dev/null | grep -F __cplusplus
    g++ -dM -E -x c++  /dev/null | grep -F __cplusplus
    
    C++ Standard__cplusplus
    C++98199711L
    C++11201103L
    C++14201402L
    C++17201703L
    C++20202002L
    C++23TBD
    ↩︎
  4. 安装musl-dev 1.2.2避免以下类似错误
    ↩︎

最后

以上就是忧虑裙子为你收集整理的AlpineLinux-3.16编译openjdk17的全部内容,希望文章能够帮你解决AlpineLinux-3.16编译openjdk17所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部