mac下编译openjdk8?so easy!
发布日期:2025-04-11 17:32:19 浏览次数:8 分类:精选文章

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

编译JDK的完整指南:macOS环境下的实践经验

编译Java Development Kit (JDK) 可能会遇到各种问题,尤其是对于编译新手而言。本文将详细记录在macOS High Sierra(10.13.5)环境下编译openjdk8的全过程,分享遇到的问题及解决方法。

环境配置

在开始编译之前,需要先配置好开发环境。以下是具体的配置步骤:

  • 打开终端,编辑~/.bash_profile文件:

    vi ~/.bash_profile
  • 在文件末尾添加以下内容:

    # 设置语言选项export LANG=C# 使用GCC编译器export CC=gccexport CXX=g++# 禁用clang的严格检查export COMPILER_WARNINGS_FATAL=false# 链接参数export LFLAGS='-Xlinker -lstdc++'# 使用64位数据模型export LP64=1# 允许自动下载依赖export ALLOW_DOWNLOADS=true# 设置并行编译线程数export HOTSPOT_BUILD_JOBS=2# 跳过版本比较export SKIP_COMPARE_IMAGES=true# 使用预编译头文件export USE_PRECOMPILED_HEADER=true# 增量编译export INCREMENTAL_BUILD=true# 选择编译内容export BUILD_JDK=true# 设置编译级别为slowdebugexport SKIP_DEBUG_BUILD=trueexport DEBUG_NAME=debug# 禁用不必要的组件export BUILD_DEPLOY=falseexport BUILD_INSTALL=falseunset JAVA_HOME
  • 保存并执行配置文件:

    source ~/.bash_profile
  • 编译过程中的问题及解决方案

    一、configure时的错误:GCC compiler is required

    在运行configure时,可能会遇到以下错误:

    configure: error: GCC compiler is required

    错误原因

    从XCode 4.2起,Clang已取代GCC成为macOS的默认编译器。因此,在编译时,如果没有安装GCC,会导致此错误。

    解决方法

  • 安装GCC 4.9:
    brew install gcc@4.9
  • 配置GCC的可执行文件:
    sudo ln -s /usr/local/Cellar/gcc@4.9/4.9.4_1/bin/gcc-4.9 /usr/bin/gccsudo ln -s /usr/local/Cellar/gcc@4.9/4.9.4_1/bin/g++-4.9 /usr/bin/g++
  • 创建alias:
    alias gcc='/usr/local/bin/gcc'alias g++='/usr/local/bin/g++'
  • 二、configure完成后,make all报错:ordered comparison between pointer and zero

    错误原因

    这是由于编译器环境的不同导致的。macOS的默认编译器是LLVM,openjdk8默认使用GCC。这种差异会导致某些代码无法兼容。

    解决方法

    检查代码中有类似以下行:

    if (base() > 0) {    // 代码逻辑}

    将其修改为:

    if (base != NULL) {    // 代码逻辑}

    三、configure完成后,make all报错:X11/Xlib.h file not found

    错误原因

    缺少X11开发库。

    解决方法

    安装XQuartz:

    brew install --cask xquartz

    配置X11头文件:

    sudo ln -s /opt/X11/include/X11 /usr/local/include/X11

    完成后,重新编译即可解决问题。

    最终验证

    编译完成后,验证JDK是否正常运行:

    build/macosx-x86_64-normal-server-fastdebug/jdk/bin/java -version

    如果输出如下内容,表示编译成功:

    java version "1.8.0-bridge-1"Java(TM) SE Runtime Environment (build 1.8.0_181-release-x86_64_hotspot_64bit)

    总结

    编译JDK的过程虽然复杂,但通过合理配置环境变量和解决常见问题,可以顺利完成。在遇到问题时,及时查阅文档或社区,结合实际情况进行调整,是高效解决问题的关键。

    上一篇:mac下配置PrintAssembly
    下一篇:Mac下查看已安装的jdk版本及其安装目录

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年04月28日 23时38分09秒