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

自己编译JDK的时候遇到的问题记录

 
阅读更多

最近重新编译了一下jdk,遇到了不少问题。特此记录。

 

openjdk,ant, linux-jdk我都放到网盘中了 ,具体地址 http://pan.baidu.com/s/1ntJkB5f

 

先说明一下我的环境(64位) 

[zhenghui@localhost openjdk]$ cat /etc/issue
Fedora release 20 (Heisenbug)

 由于这个系统是临时装的,所以很多东西都没有(包括gcc,g++等)。编译的时候,反正就是在openjdk目录下运行

写道
[zhenghui@localhost openjdk]$ make sanity

 一个个错误排除解决吧。

 

 

1 安装gcc g++ 

写道
sudo yum install gcc-c++ libstdc++-devel

 make工具应该是默认安装的。如果没有,则直接 install make。

 

2 安装ALSA声卡驱动

由于jdk支持声音处理,所以需要安装0.9.1版本以上的ALSA驱动。

写道
ERROR: You seem to not have installed ALSA 0.9.1 or higher.
Please install ALSA (drivers and lib). You can download the
source distribution from http://www.alsa-project.org or go to
http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages.

 找了N多法子,最后发现解决办法很easy

写道
sudo yum install alsa*

 呵呵

 

3 FreeType 字体错误

具体的问题如下:

写道
ERROR: FreeType version 2.3.0 or higher is required.
make[2]: Entering directory `/home/zhenghui/software/openjdk/jdk/make/tools/freetypecheck'

 解决方法是

写道
[zhenghui@localhost openjdk]$ sudo yum install freetype.x86_64 freetype-devel.x86_64

 

4 do not have access to valid Cups header file

具体的错误如下

写道
ERROR: You do not have access to valid Cups header files.
Please check your access to
/usr/include/cups/cups.h
and/or check your value of ALT_CUPS_HEADERS_PATH,
CUPS is frequently pre-installed on many systems,
or may be downloaded from http://www.cups.org

 解决的方法是安装一个 cups-devel.。我是x86 64位的,所以

写道
[zhenghui@localhost openjdk]$ sudo yum install cups-devel.x86_64

 搞定。

 

环境变量设置:

写道
export LANG=C
##jdk路径设置
export ALT_BOOTDIR="/home/zhenghui/software/jdk1.7.0_45"
export ALT_JDK_IMPORT_PATH="/home/zhenghui/software/jdk1.7.0_45"
##ant路径设置
export ANT_HOME=/home/zhenghui/software/apache-ant-1.8.2
##允许自动下载
export ALLOW_DOWNLOADS=true
##设置编译的线程数,一般是设置成与cpu个数一样
export HOTSPOT_BUILD_JOBS=4
##编译结果存放路径
export ALT_OUTPUTDIR=/home/zhenghui/software/openjdk/build
##如果是64位系统
export ARCH_DATA_MODEL=64
##顺手取消两个环境变量设置
unset JAVA_HOME
unset CLASSPATH

 

 

 环境和依赖看上去已经解决的差不多了。下面就直接到 /openjdk 下直接执行make命令就好了。慢慢等吧。

 

如果只是编译hotspot的话,那么直接在/openjdk/hostspot/make下执行

 

 

写道
##编译jvmg版本的jdk。
make jvmg jvmg1 2>&1 | tee $ALT_OUTPUTDIR/build.log

 

在编译的时候,遇到了一个很奇怪的问题 

cannot find -lstdc++

 

写道
Linking vm...
/usr/bin/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status
ln: failed to create symbolic link 'libjvm_g.so': File exists
ln: failed to create symbolic link 'libjvm_g.so.1': File exists

 解决了很久。网上的解决方案由于都不是针对编译jdk的,所以一直没找到法子。最后的解决办法是

写道
sudo yum install libstdc++-static.x86_64

 最后编译成功。

 

由于我只是只是单独编译了hotspot,所以虚拟机的输出结果在 

写道
/home/zhenghui/software/openjdk/build/linux_amd64_compiler2

 对应的目录有

写道
[zhenghui@localhost linux_amd64_compiler2]$ ll
total 48
drwxrwxr-x. 2 zhenghui zhenghui 4096 May 24 14:50 debug
drwxrwxr-x. 2 zhenghui zhenghui 4096 May 24 14:09 fastdebug
drwxrwxr-x. 7 zhenghui zhenghui 4096 May 24 11:56 generated
drwxrwxr-x. 3 zhenghui zhenghui 20480 May 24 14:52 jvmg
drwxrwxr-x. 2 zhenghui zhenghui 4096 May 24 11:56 optimized
drwxrwxr-x. 2 zhenghui zhenghui 4096 May 24 11:56 product
drwxrwxr-x. 2 zhenghui zhenghui 4096 May 24 11:56 profiled

 

 上面我的命令只是编译jvmg版的hotspot。所以除了jvmg目录,其他目录下是没有hotspot的。

最后是通过gamma启动器来启动hotspot。直接启动的话,还是会抛错,

写道
[zhenghui@localhost jvmg]$ ./gamma
./gamma: error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory

 可以发现,其实在当前目录(也就是jvmg目录)就有对应的libjvm.so ,所以,修改   /etc/ld.so.conf  文件,把当前目录加进去。具体如下

写道
[zhenghui@localhost linux_amd64_compiler2]$ cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/home/zhenghui/software/openjdk/build/linux_amd64_compiler2/jvmg

 

 然后别忘了执行 ldconfig 命令让上面的修改生效。

再次运行

写道
[zhenghui@localhost jvmg]$ ./gamma -version
JAVA_HOME must point to a valid JDK/JRE to run gamma
Error: could not find libjava.so
Error: could not find Java 2 Runtime Environment.

 这个问题解决就很容易了。

 

写道
[zhenghui@localhost jvmg]$ export JAVA_HOME=/home/zhenghui/software/jdk1.7.0_25
[zhenghui@localhost jvmg]$ echo $JAVA_HOME
/home/zhenghui/software/jdk1.7.0_25
[zhenghui@localhost jvmg]$ ./gamma -version
Using java runtime at: /home/zhenghui/software/jdk1.7.0_25/jre
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
OpenJDK 64-Bit Server VM (build 24.0-b56-internal-jvmg, mixed mode)

     bingo!

-----------------------分割线,下面是三年前的记录------------------------------

 

自己在ubuntu上装的.按照撒加的http://rednaxelafx.iteye.com/blog/875957 文章.中间记录一些问题.

 

1 在解压jdk-6u23-fcs-src-b05-jrl-12_nov_2010.jar 与 jdk-6u23-fcs-bin-b05-jrl-12_nov_2010.jar这两个文件的时候

RednaxelaFX 写道
你在解压源码JAR的时候一定要有X支持的图形界面,否则它就无法解压。例如说如果你简单的通告ssh连接到远程服务器去做这个解压就会失败,因为那样连接只要字符界面而没有图形界面。

 

感谢撒迦的帮助..

 

2 在检查编译环境正确性的时候 也就是

$ make dev-sanity BUILD_DEPLOY=false SKIP_COMPARE_IMAGES=true ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk ALT_DEVTOOLS_PATH=/usr/bin HOTSPOT_BUILD_JOBS=2 

 

 

的时候.编译发生错误fatal error: alsa/asoundlib.h: No such file or directory错误

解决的方法是

apt-get install libasound2-dev

 

 

 

分享到:
评论

相关推荐

    jdk反编译软件

    不过,值得注意的是,反编译可能涉及版权和法律问题。未经授权对他人代码进行反编译可能会侵犯原作者的知识产权,因此在使用反编译工具时,一定要确保遵循相关法律法规,尊重他人的劳动成果。 在给定的压缩包文件...

    JDK1.6安装过程详解

    对于初学者来说,安装JDK可能会遇到不少挑战。本文将详细介绍如何安装JDK1.6,并配置环境变量。 首先,需要访问Oracle官网提供的JDK下载页面(http://java.sun.com/javase/downloads/index.jsp),找到JDK1.6的下载...

    jdk环境变量配置

    ### jdk环境变量配置 在计算机编程领域,Java是一种广泛使用的高级编程语言,而Java开发工具包(JDK)则是支持Java程序开发的基础...在配置过程中遇到问题时,建议查阅官方文档或寻求专业帮助,以避免不必要的错误。

    jdk14-mac-dmg.zip

    JDK 14作为Oracle JDK的一部分,有强大的社区支持,包括官方文档、开源项目、论坛和博客,可以帮助开发者解决在使用过程中遇到的问题。同时,Oracle会定期发布更新,修复已知问题,增强功能。 总结来说,JDK 14对...

    jdk api 1.8_google

    Java 8提供了更好的异常处理机制和更强大的日志记录接口,使得在使用Google API过程中遇到的问题更容易被诊断和解决。 10. **实战应用示例** 为了更好地理解JDK 1.8与Google API的结合,我们可以参考实际案例,如...

    Ubuntu14.04编译android4.4源码一次性成功

    【Ubuntu14.04编译android4.4源码一次性成功】 在 Ubuntu 14.04 系统上...在整个过程中,保持良好的记录习惯,对于遇到的问题和解决方法,及时记录下来,这不仅可以帮助自己避免重复错误,也能为其他开发者提供参考。

    Android 源码编译过程

    Android源码编译过程是Android开发中的核心环节,它涉及到一系列复杂的步骤,旨在将源代码...在Android源代码编译过程.txt文件中,应该记录了编译过程中的具体步骤和可能遇到的问题,是学习和解决问题的重要参考资料。

    jdk1.8.0_211.zip解压版

    "release"文件记录了JDK的具体版本信息,包括版本号、构建日期和平台等。"THIRDPARTYLICENSEREADME.txt"和"THIRDPARTYLICENSEREADME-JAVAFX.txt"这两个文件则分别列出了JDK中所依赖的第三方库及其对应的许可协议,...

    jdk配置珍藏版

    请注意,如果遇到问题,还可以尝试以下备选方案: - 创建新的系统变量`JAVA_HOME`,并将值设为JDK的安装路径。 - 修改`PATH`变量,添加`;%JAVA_HOME%\bin;`和`;%JAVA_HOME%\jre\bin;`。 - 创建`CLASSPATH`变量,设置...

    JDK自述文件

    发行说明详细记录了JDK 6的新特性、改进的地方以及已知的问题。这对于开发者来说非常重要,因为它可以帮助他们更好地了解如何利用JDK中的新功能,并了解哪些地方需要注意。 #### 兼容性 JDK 6在设计上确保了向后...

    OpenOffice 3.0编译环境搭建记录.doc

    ### OpenOffice 3.0编译环境搭建详细指南 #### 一、概述 本文档旨在为希望在Windows平台上从源代码构建OpenOffice 3.0的开发者提供详细的...如果您在搭建过程中遇到任何问题,可以参考提供的官方文档链接寻求帮助。

    java中JDK在运行时出现的常见问题.docx

    在Java编程过程中,使用JDK(Java Development Kit)进行编译和运行是常规步骤。然而,初学者或经验丰富的开发者都可能遇到各种运行时问题。本文将深入探讨在Java中使用JDK运行程序时可能出现的一些常见问题,并提供...

    Ubuntu14.04以及新版本_编译多平台MTK代码

    在搭建编译环境以适应多平台MTK(MediaTek)源码的场景下,Ubuntu Linux操作系统是首选的...在实际操作中,建议记录详细的配置过程和遇到的问题,这不仅能帮助自己今后快速回顾和复现环境,还能为团队协作提供便利。

    安卓操作系统源码编译经验.docx

    首先,我们需要一个合适的编译环境,推荐使用64位的Ubuntu 10.04操作系统,因为其他版本可能会遇到未知问题。然而,如果你选择其他Ubuntu版本,也可能能够编译,但需要准备应对可能遇到的Bug。 编译环境的搭建至关...

    jdk11-mac.zip

    7. **JShell增强**:JDK内置的REPL(Read-Eval-Print Loop)工具JShell在JDK 11中得到了增强,支持了变量别名和命令历史记录。 8. **删除过时API**:为了保持API的清洁,JDK 11移除了许多长期废弃的API,如`sun....

    hadoop2.7.2 win10编译下的

    如果你遇到这些问题,参考描述中的博客或其他在线资源可能有所帮助,这些资源通常记录了作者在编译过程中遇到的挑战和解决方法。 总结,编译Hadoop 2.7.2在Win10环境下是一项技术性的任务,需要对Hadoop、Cygwin和...

    java程序设计基础 安装jdk教程

    ### Java程序设计基础之JDK安装教程 #### 一、JDK简介 JDK(Java Development Kit),即Java开发工具包,是Java编程语言的核心组件之一。它包含了编译、调试和运行Java...如果遇到任何问题,建议及时寻求老师的帮助。

    解决调试JDK源码时,不能查看变量的值问题

    为了能在调试时查看变量值,需要重新编译JDK源码,并包含调试信息。 首先,要解决这一问题,我们需要创建两个目录,一个用于存放JDK源码,另一个用于存放调试信息。然后,我们需要将JDK源码包解压至源码目录中,...

    使用Maven编译Hadoop(2.7.1)

    ### 使用Maven编译Hadoop ...3. **文档记录**:建议详细记录整个编译过程中的每一步,包括遇到的问题以及解决方案,以便未来参考或复用。 通过以上步骤,您就可以在CentOS 6.7 64位系统上成功编译Hadoop 2.7.1版本了。

Global site tag (gtag.js) - Google Analytics