最近重新编译了一下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目录下运行
一个个错误排除解决吧。
1 安装gcc g++
make工具应该是默认安装的。如果没有,则直接 install make。
2 安装ALSA声卡驱动
由于jdk支持声音处理,所以需要安装0.9.1版本以上的ALSA驱动。
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
呵呵
3 FreeType 字体错误
具体的问题如下:
make[2]: Entering directory `/home/zhenghui/software/openjdk/jdk/make/tools/freetypecheck'
解决方法是
4 do not have access to valid Cups header file
具体的错误如下
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位的,所以
搞定。
环境变量设置:
##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下执行
make jvmg jvmg1 2>&1 | tee $ALT_OUTPUTDIR/build.log
在编译的时候,遇到了一个很奇怪的问题
cannot find -lstdc++
/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的,所以一直没找到法子。最后的解决办法是
最后编译成功。
由于我只是只是单独编译了hotspot,所以虚拟机的输出结果在
对应的目录有
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。直接启动的话,还是会抛错,
./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 文件,把当前目录加进去。具体如下
include ld.so.conf.d/*.conf
/home/zhenghui/software/openjdk/build/linux_amd64_compiler2/jvmg
然后别忘了执行 ldconfig 命令让上面的修改生效。
再次运行
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]$ 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这两个文件的时候
感谢撒迦的帮助..
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
相关推荐
说明在使用 Android Studio 导入新浪微博 SDK 时,遇到了一些问题,通过查看官方项目的 Issues 及 Google 后终于将问题解决,记录下来仅供参考。运行环境Android Studio 1.2.1.1Android SDK 22JDK 1.7Gradle 2.2.1请...
ttdeploy记录teamtalk在部署过程中遇到的问题,仅供大家参考这里只是 TTAutoDeploy 的补充, 所以请安装前仔细阅读TTAutoDeploy,尤其是红色标注的“强烈建议”, TTAutoDeploy中说明过的这里不再重复由于缺少Android,...
说明在使用 Android Studio 导入新浪微博 SDK 时,遇到了一些问题,通过查看官方项目的 Issues 及 Google 后终于将问题解决,记录下来仅供参考。运行环境Android Studio 1.2.1.1Android SDK 22JDK 1.7Gradle 2.2.1请...
1.3.2 编译自己的HelloWorld程序 11 1.3.3 让代码运行起来 13 1.4 初探Hello World 14 1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的...
1.3.2 编译自己的HelloWorld程序 11 1.3.3 让代码运行起来 13 1.4 初探Hello World 14 1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的...
提供预编译的功能,某种程度上可以避免sql注入的问题 4.提前做语法检查,在给?赋值的过程中要求数据类型一定要匹配,这样在某种程度上可以避免因为数据类型不匹配而发生的异常 CallableStatement:主要用来执行...
最近在部署应用时,遇到一个问题,就是ant脚本登录到linux机器上执行部署命令时,不知如何去写脚本。不知有没有哪位同学做过?以下是我的ant脚本: <project name="taxs_Admin" default="usage"> ...
Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method...
Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method...
37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有什么区别? 38.列举三种以上垃圾回收算法,并比较其优缺点? 39.编写代码实现一个线程池 40.描述一下JVM加载class文件的原理机制? 41....
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................