1.借鉴:
[1] 周志明.深入理解java虚拟机[M].北京:机械工业出版社,2013.6
2.开始:
1.配置可用源
刚装好机器,想运行sudo apt-get update,发现有些内容下载失败,依赖没法下载,就没法进行下一步,所以这是第一步。
通过【借鉴】部分可以看下如何配置可用源,这边我就上两张图。
a.首先看一下机器的版本号:使用 sudo lsb_release -a
可以看到我这边的Codename为maverick,所以配置源的时候里面的有些名称需要跟他一致。
b.接下来配置源,先备份一下
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
再更改
sudo gedit /etc/apt/sources.list
接下来上两张图,图片中的部分为需要更改的部分,其他的部分全部不用动。图片中最上边的四行也不需要更改。
我这边贴一下机器Codename为maverick的图上边的源。
deb http://old-releases.ubuntu.com/ubuntu maverick main universe restricted multiverse
deb-src http://old-releases.ubuntu.com/ubuntu maverick main universe restricted multiverse
deb http://old-releases.ubuntu.com/ubuntu maverick-security universe main multiverse restricted
deb-src http://old-releases.ubuntu.com/ubuntu maverick-security universe main multiverse restricted
deb http://old-releases.ubuntu.com/ubuntu maverick-updates universe main multiverse restricted
deb http://old-releases.ubuntu.com/ubuntu maverick-proposed universe main multiverse restricted
deb-src http://old-releases.ubuntu.com/ubuntu maverick-proposed universe main multiverse restricted
deb http://old-releases.ubuntu.com/ubuntu maverick-backports universe main multiverse restricted
deb-src http://old-releases.ubuntu.com/ubuntu maverick-backports universe main multiverse restricted
deb-src http://old-releases.ubuntu.com/ubuntu maverick-updates universe main multiverse restricted
配置源告一段落,接下来使用sudo apt-get update 更新一下。
2.准备环境
a. 通过mercurial从仓库拉取源码,先安装下mercurial
sudo apt-getinstall mercurial
接下来是【借鉴】中深入JVM中的内容,我想将它下载内容放在Download目录下
cd /usr/kaiser/Download
hg clone http://hg.openjdk.java.net/jdk7u/jdk7u-dev
cd jdk7u-dev
chmod 755 get_source.sh
./get_source.sh
顺便说一下,这个过程可能比较耗时,但是我下载的时候用了5分钟好像,根据网络状况不同,有可能需要手动下载jdk7u-dev,这个我就不知道了。。
b.jdk安装
JDK1.7版本下载 找这个地址就找了很久,网上给出的大都是Oracle中最新JDK的版本,这边我使用的版本是:1.7.0_04。也试过使用jdk6编译,报出的是https向http重定向的错误。
解压下载下来的 jdk-7u4-linux-x64.tar.gz,可以使用右键解压(extract here),或者使用命令: tar zxvf jdk-7u4-linux-x64.tar.gz
解压之后,将其移动到/usr/lib/jvm目录下:sudo mv jdk1.7.0_04 /usr/lib/jvm
如果没有/usr/lib/jvm目录就创建一下:sudo mkdir /usr/lib/jvm
接下来配置环境变量:(以下为我自己的配置,根据JDK路径和版本而定)
sudo gedit /etc/profile
然后在最后面添加几个回车,填上图片内容即可
最后别忘了:source /etc/profile
设置默认JDK
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_04/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_04/bin/javac 300
完成了,看下jdk版本
c.其他环境配置
依照【借鉴】深入JVM中的描述:(因为这边已经安装jdk1.7.0_04,所以就去除了书中的openjdk-6-jdk)
sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print0dev binutils libmotif3 libmotif-dev ant
d.系统环境设置(参考【借鉴】ubuntu 14.04下编译JDK7)
sudo gedit /etc/bash.bashrc
具体的含义在书中和那篇博客中都有详细说明了,我就不粘贴了。
3.编译
a.打开openjdk源码的路径(这个是我下载后解压的目录):cd /home/kaiser/Downloads/jdk7u-dev
b.在jdk7u-dev目录下执行: make 2>&1 | tee $ALT_OUTPUTDIR/build.log(执行完这个命令,我以为编译完成了,但是还没有)
c. 执行:make
3.大功告成
这个过程也尝试了很多次,机器换了几次,jdk版本也换了几次,ant版本也换了几次,总之结果是好的,过程自己体会。如果你也想编译个jdk版本。那就来吧,只要不放弃,总会成功。
借鉴了很多前辈的文章博客,总得回报一下社会。个人特别讨厌无脑复制粘贴,原因是找个东西千篇一律,还找不到源。