背景:因为之前学习openjdk的虚拟机系统,安装了emacs,导致环境编译出现问题。例如:这个问题,但不仅仅只有这一个。

    虽然有安装之前有整个虚拟机完整的备份,但是正好趁此机会,再重新整理一遍编译过程。

1. 环境信息

   宿主操作系统:win7 professional 32位

   vmware版本: vmware7

   虚拟系统版本: Ubuntu10.10 32位 (English version)

2. 环境搭建

   2.1 安装wmware,过程略。

   2.2 创建ubuntu的虚拟系统(不是安装ubuntu过程),只需要设置cpu,memory,harddriver size,安装路径,其他默认即可。

       注:配置虚拟机hardware的时候,删除不使用的hardware,特别是sound。参见这个帖子

       创建完(这里还未开始安装系统)之后虚拟机的hardware信息:

         image

    2.3 安装ubuntu,过程略。

       注:1. 选择English;

          2. 请保证网络良好,要么直接断网,否则在安装过程中选择时区在网络差的情况会造成卡机(卡很久很久,重装2、3次才发觉是网络的问题,可怜的移动3g网络)

          3. 安装完成之后,进行系统清理。(删除不适用的软件:game之类的。看个人喜好)

          4. 更新源:$sudo apt-get update  #没有通过UpdateManager更新ubuntu操作系统

3. 软件安装

      3.1 ubuntu中安装openssh-server,方便与宿主机器交互文件。

        $sudo apt-get install openssh-server   #安装完成之后sshd服务自动启动。

    3.2 宿主计算机安装ssh软件,过程略。

    3.3 安装apt-file,便于根据*.h搜索对应的库文件,后面会用到。

        $sudo apt-get install apt-file

        $apt-file update       #安装完之后更新源

    3.4 安装ant,下载地址,本地保存路径:/home/haowei/Downloads(注:后面的路径均为本人计算机路径)

        $cd /home/haowei/Downloads

        $unzip apache-ant-1.8.2-bin.zip  -d .. #解压到上级目录,解压后路径:/home/haowei/apache-ant-1.8.2

     3.5 安装freetype

                         sudo apt-get install libfreetype6       

        sudo apt-get install libfreetype6-dev


复制代码

     3.6 安装BOOTJDK,从oracle官网下载jdk1.6.0_26,解压后的路径:/home/haowei/sunjdk/jdk1.6.0_26

     3.7 下载解压openjdk7的源码,解压后的路径:/home/haowei/openjdk

     3.8 安装编译需要的软件或者库:

         软件或者库列表:

           gawk;g++;libasound2-dev;libcups2-dev;libx11-dev;libxt-dev;

           libxrender-dev;libxext-dev;libxtst-dev

           $sudo apt-get install xxx    #执行安装xxx

     3.9 如果编译过程中还是缺少依赖库的话,参考下面这个过程,帮你找到对应的库。

                    Image[3]

                    编译提示,缺少X11/extensions/Xrender.h No Such file or directory。通过命令【$apt-file search Xrender.h】查找哪些库有Xrender.h

                    Image(1)

                    $sudo apt-get install libxrender-dev     #最终确定,Xrender.h是在libxrender-dev库中。

             3.10

             由于该openjdk的jaxp和jaxws目录下并不包含JAXP和JAX-WS的源码(它们分别可以在JAXP和JAX-WS的主页上下载),在

        http://download.java.net/jaxp/1.4.5

        下载jaxp-1_4_5-unittests.zip和jaxp145_01.zip,

        在http://download.java.net/glassfish/components/jax-ws/openjdk/jdk7

        下载jdk7-jaxws2_2_4-b03-2011_05_27.zip

        在https://java.net/downloads/jax-ws/JDK7/

        下载jdk7-jaf-2010_08_19.zip

        将这四个压缩包放到openjdk\java\devtools\share\jdk7-drops目录下,设置ALT_DROPS_DIR指向该目录,构建jaxp和jaxws的ANT脚本会尝试从该目录查找这些zip。

        你还可以使用make ALLOW_DOWNLOADS=true来允许ANT下载需要的zip,不过这会产生太多不确定性,因此不推荐此做法。


4. 编译openjdk

   4.1 编译环境的预检查

      进入openjdk的目录 输入 make sanity

   4.2 设置环境变量

                       有JAVA_HOME的时候会出问题。所以make以前要先:     

                (1)unset JAVA_HOME

                (2)unset CLASSPATH

                (3)export LANG=C ALT_BOOTDIR=/home/eric/tools/jdk1.7.0_06

                (4)export  ALT_DROPS_DIR=/home/eric/tools/openjdk7/java/devtools/share/jdk7-drops

                (4)make ALLOW_DOWNLOADS=true

     此处必须有ALLOW_DOWNLOADS=true。否则编译jaxp的时候会出错,因为jaxp的源代码是临时下载的

   4.3 执行编译

          执行 make 命令
          如果编译的过程中失败了,需要

         (1)make clean

         (2)make (不推荐使用:make ALLOW_DOWNLOADS=true)

      



?


4.2 编译过程的问题

             4.2.1 freetype检查出现问题
                编译过程出现下面的错误:

            Image(2)

            解决办法:安装完freetype后,需要对路径进行修改(其实就是要将freetype目录里的全部文件移到上层目录,再修改上层目录的文件名为freetype):

                 old:/usr/local/include/freetype2/freetype/*

                 new:/usr/local/include/freetype/*

     4.2.2 libfreetype.so找不到

             下面这个问题是libfreetype.so文件找不到。但在/usr/lib中有libfreetype.so.6的文件

             Image(3)

             在目录【/usr/lib】中建立libfreetype.so的

             软连接:【$sudo ln -sv /usr/lib/libfreetype.so.6 libfreetype.so】

            Image(4)

           4.2.3 编译完成

?
1
2
3
4
5
6
7
8
9
10
11
-- Buildtimes----------
Target debug_build
Start 2012-02-07 10:47:19
End   2012-02-07 10:56:50
00:00:11 corba
00:00:26 hotspot
00:08:48 jdk
00:00:06 langtools
00:09:31 TOTAL
-------------------------
注:这里的执行时间不是真正完整的编译时间。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐