最近为了研究jvm, 尝试build java 源代码。
网上有一些openjdk build教程,但是为了后期测试与应用方便,还是选定sun jdk.
感谢RednaxelaFX同学的帮助,最终结果如下:
http://hllvm.group.iteye.com/group/topic/27149
1. 虽然jdk1.6 README-builds.html 里说要jdk1.5作为Bootstrap, 其实是要求1.6, 所以要先下载安装sun jdk-6u26-linux-x64.bin
注意这里用opensdk 是不行的,没有javap
2. 环境变量设置如下:
ALT_BOOTDIR=/tmp/jdk1.6.0_26
ALT_DEVTOOLS_PATH=/usr/bin
DEVTOOLS_PATH=/usr/bin
LANG=C
3. 安装cups, 下载并build cups-1.5.0-source.tar.bz2
4. 不知道为什么,下载的jdk1.6源码中少了字体文件,ERROR: Missing ./../src/share/lib/fonts/LucidaTypewriterRegular.ttf.
Verify you have downloaded and overlayed on the source area all the binary files.
不管它了,从现有的jre 里拷过来。
5. make dev-sanity 有一些warning, 先不管。
6. 执行make dev-sanity BUILD_DEPLOY=false SKIP_COMPARE_IMAGES=true ALT_BOOTDIR=/tmp/jdk1.6.0_26 ALT_DEVTOOLS_PATH=/usr/bin HOTSPOT_BUILD_JOBS=2
等着......明天来看结果
偶的新机器真快,20分钟不到就结束了,
和这里一样报错,看来还得来一次:http://rednaxelafx.iteye.com/blog/875957
make[3]: Entering directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm/util'
make[3]: *** No rule to make target `/usr/X11R6/lib/X11/config/Imake.tmpl', needed by `xmkmf'. Stop.
make[3]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm/util'
make[2]: *** [util/mkcatdefs] Error 2
make[2]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm'
make[2]: Entering directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm'
(cd util; make)
make[3]: Entering directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm/util'
make[3]: *** No rule to make target `/usr/X11R6/lib/X11/config/Imake.tmpl', needed by `xmkmf'. Stop.
make[3]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm/util'
make[2]: *** [util/mkcatdefs] Error 2
make[2]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm'
make[1]: *** [motif-build] Error 2
make[1]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/control/make'
make: *** [dev-build] Error 2
现场直播,
报错了
make[3]: Entering directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm/util'
make[3]: *** No rule to make target `/usr/X11R6/lib/X11/config/Imake.tmpl', needed by `xmkmf'. Stop.
make[3]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm/util'
make[2]: *** [util/mkcatdefs] Error 2
make[2]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm'
make[2]: Entering directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm'
(cd util; make)
make[3]: Entering directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm/util'
make[3]: *** No rule to make target `/usr/X11R6/lib/X11/config/Imake.tmpl', needed by `xmkmf'. Stop.
make[3]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm/util'
make[2]: *** [util/mkcatdefs] Error 2
make[2]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm'
make[1]: *** [motif-build] Error 2
make[1]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/control/make'
make: *** [dev-build] Error 2
估计是x11库的问题,检查jdk6_src\motif\lib\Xm\util\Makefile,用到了/usr/X11R6/lib
我的本机是没有这个目录的,从/usr/share 下找到了X11, 拷到/usr/X11R6/lib这里。
再build,还有错:
gcc -I/usr/X11R6/include -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -DFUNCPROTO=15 -DNARROWPROTO -c -o mkcatdefs.o mkcatdefs.c
mkcatdefs.c: In function 'mkcatdefs':
mkcatdefs.c:350: warning: cast to pointer from integer of different size
mkcatdefs.c:402: warning: cast to pointer from integer of different size
rm -f mkcatdefs
gcc -o mkcatdefs mkcatdefs.o
gcc -I/usr/X11R6/include -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -DFUNCPROTO=15 -DNARROWPROTO -c -o lndir.o lndir.c
lndir.c: In function 'quit':
lndir.c:104: warning: incompatible implicit declaration of built-in function 'exit'
lndir.c: In function 'quiterr':
lndir.c:112: warning: incompatible implicit declaration of built-in function 'exit'
lndir.c: In function 'main':
lndir.c:353: warning: incompatible implicit declaration of built-in function 'exit'
rm -f lndir
gcc -o lndir lndir.o
make[3]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm/util'
rm -f XmMsgI.h XmMsgCatI.h Xm.cat
./util/mkmsgcat -Xm ./Messages.c
mv -f Xm.msg Xm1.msg
./util/mkcatdefs XmMsgCatI.h Xm1.msg > Xm.msg
mkcatdefs: XmMsgCatI.h created
rm -f Xm1.msg
rm -f Xm.cat
gencat Xm.cat ./Xm.msg
./Xm.msg:2: unknown directive `': line ignored
./Xm.msg:16: unknown directive `': line ignored
make[2]: *** [Xm.cat] Error 1
make[2]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm'
make[2]: Entering directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm'
mkdir unshared
ln -s ../bindings/unshared unshared/bindings
ln: creating symbolic link `unshared/bindings' to `../bindings/unshared': Operation not supported
ln -s ../util/unshared unshared/util
ln: creating symbolic link `unshared/util' to `../util/unshared': Operation not supported
make[2]: *** [includes] Error 1
make[2]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/motif/lib/Xm'
make[1]: *** [motif-build] Error 2
make[1]: Leaving directory `/mnt/hgfs/workplace/jdk6_src/control/make'
make: *** [dev-build] Error 2
估计还是X11问题,都怪俺装Centos时以为不会做X11 开发,安装省了许多相关库
经过多次折腾,今天张全部搞定了。
不知道什么原因,下载的src 包里总是少了各样的gif, wav等资源文件。
(需要的同学可以联系我,我都在网上找全的)
另外在amd64位下要改下\jdk6_src\j2se\make\sun\jdbc\Makefile 里$(TEMPDIR)/libodbcinst.so: dummyodbc.c $(TEMPDIR)
$(CC) -shared -fPIC -o $@ $<
$(TEMPDIR)/libodbc.so: dummyodbc.c $(TEMPDIR)
$(CC) -shared -fPIC -o $@ $<
分享到:
相关推荐
通过以上步骤,我们已经在Ubuntu 10.04 (X86)系统上成功搭建了一个用于编译Android 2.2源代码的环境,并且解决了因JDK版本不匹配带来的问题。接下来就可以根据实际需求继续进行源代码的编译、调试等工作了。
`src`目录则包含了JDK的所有源代码,这是理解JDK内部机制的关键。Java 8引入了许多新特性,如Lambda表达式、Stream API、默认方法和接口的私有方法等。在`src`目录下,我们可以找到这些新特性的实现细节,例如`java....
### Android移动操作系统源代码指南 #### 一、概述 Android移动操作系统是当今最流行的移动设备操作系统之一,由Google公司维护并开源。对于开发者而言,掌握Android的源代码不仅能够帮助他们更好地理解系统的内部...
### 在Ubuntu上下载、编译和安装Android最新源代码 #### 概述 本文将详细介绍如何在Ubuntu系统中下载、编译并安装Android最新源代码的过程。为了完成这一任务,首先需要在一个虚拟机环境中安装Ubuntu操作系统,这...
- **命令**:`sudo apt-get install git-core gnupg flex bison perl libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush ...
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev...
在Ubuntu上编译Android系统,通常需要使用Android源代码,这涉及到执行`source build/envsetup.sh`命令来设置编译环境,然后用`lunch`选择要编译的设备配置。在这个过程中,正确配置的Java环境至关重要,因为它会...
### J2ME手机游戏设计案例源代码-GameEngine_Record #### 概述 J2ME(Java 2 Micro Edition)是Sun Microsystems推出的一种基于Java的技术标准,主要用于移动设备上的应用程序开发,例如智能手机、PDA等。本文将...
- **JAR_SRC变量**:在Eclipse的“Preferences”设置中,Java/BuildPath/Classpath Variables下存在一个名为“JAR_SRC”的变量,该变量负责设置源代码路径。需要注意的是,这个变量是不可直接修改的,只能由系统自动...
- **sun-java5-jdk**:由于 Ubuntu 9.10 已经默认使用 Java 1.6 替换 1.5,因此需要重新下载并安装 Java 1.5。 此外,还需要下载并配置 repo 脚本,这是一款由 Google 开发的分布式版本控制系统,用于管理 Android ...
- 在 Directory 选项中点击 Browse 按钮,选择 Eclipse 的 workspace 中的 Openfire 源代码文件夹(通常命名为 openfire_src)。 - 设置 Project name 为 Eclipse 的 workspace 中 Openfire 源代码文件夹的名字。 ...
在Ubuntu 10.04 LTS 32位系统上,安装Java Development Kit (JDK) 版本6是至关重要的,因为Android 2.3需要这个版本的JDK来编译源代码。你可以通过以下命令安装JDK6: 1. 添加Canonical仓库: ``` sudo add-apt-...
下载Android源代码是Android开发中的一个基础步骤,对于理解Android系统的内部运作以及进行自定义修改或构建至关重要。本文将详细讲解在Ubuntu和MacOS系统上下载Android源代码所需的步骤和工具。 首先,确保你的...
- `javac`命令用于编译源代码,这一步确保了Java类被正确编译为字节码。 - `run-client-windows`任务执行客户端代码,展示了如何调用刚刚部署的WebService并打印返回结果。 这个简单的例子通过创建和运行一个...