注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

singleboy的博客

愿工作和生活中的点点滴滴与你分享。。。感谢各位同仁,让我跟着大家一起进步。

 
 
 

日志

 
 

Linux应用程序开发(四)---移植Jikes RVM到arm linux  

2011-12-12 10:42:36|  分类: Linux应用开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

移植环境(红色粗字体字修改后内容,蓝色粗体字为特别注意内容)

1,主机环境:VMare下CentOS 5.5 ,1G内存。

2,集成开发环境:Elipse IDE

3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gneabi-gcc v4.5.1。

4,开发板:mini2440,2M nor flash,128M nand flash。

5,u-boot版本:u-boot-2009.08

6,linux 版本:linux-2.6.32.2

7,参考文章:

Cross compile Jikes RVM for PowerPC on X86 Linux

Building the RVM

Ant: Apache Ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。该软件由Apache软件基金会所提供。其作用是,当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编 译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。部分信息源自ANT的安装/配置笔记

Jikes RVM : Jikes RVM (Research Virtual Machine,研究虚拟机)提供了一个灵活的开放测试平台原型的设计来替代品的种类繁多的虚拟机技术和实验。 该系统是一个OSI批准的许可证下授权。 Jikes RVM在许多平台上运行的国家最先进的虚拟机技术,动态编译,自适应优化,垃圾收集,线程调度和同步及垫款 的Jikes RVM的一个显着特征是,它是在Java编程语言实现的,即是自托管,其Java代码运行,而不需要第二个虚拟机本身。大多数其他Java平台的虚拟机是在本机代码编写(通常,C或C + +中)。 Java实现提供了便携性,缓解和虚拟机和应用资源,如对象,线程,操作系统界面的无缝集成。信息源自其官方http://jikesrvm.org/

 
一,在linux宿主机上构建

1,安装前准备

【1】安装 class libraries:jikesrvm支持GNU classpath 类库和apache harmony类库,按其手册说明(In the release version of Jikes RVM is support for the Apache Harmony class library.)这里选择下载Apache Harmony,即下载HDK(Harmony Development Kit) 6.0。HDK 是针对Harmony 开发商的。它包括预构建的类库和VM 二进制文件,必要include文件和相关依赖项。它是不能为常见的JDK替代的。

<1>下载完后解压到/usr/local目录下

[root@localhost jikesrvm]# tar -zxvf apache-harmony-6.0-hdk-r991881-linux-x86-snapshot.tar.gz -C /usr/local

<2>设定HDK_HOME环境变量并添加到PATH路径下

[root@localhost jikesrvm]# vim /etc/profile
修改如下:

#set java hdk path
export HDK_HOME=/usr/local/harmony-6.0-hdk-991881
export PATH=$PATH:$HDK_HOME/jdk/bin:$HDK_HOME/jdk/jre/bin
export CLASSPATH=$HDK_HOME/lib:$HDK_HOME/jdk/lib:$HDK_HOME/jdk/jre/lib


修改完成后保存退出。

<3>配置文件刷新
[root@localhost jikesrvm]# source /etc/profile
[root@localhost jikesrvm]#

<4>运行测试

[root@localhost jikesrvm]# java -version
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.8) (rhel-1.22.1.9.8.el5_6-i386)
OpenJDK Client VM (build 19.0-b09, mixed mode)
[root@localhost jikesrvm]# javac -version
javac 1.6.0_20
[root@localhost jikesrvm]#

【2】安装ant构建工具:http://ant.apache.org/bindownload.cgi,下载其二进制文件。参考文章Ant入门与进阶
<1>将其解压到/usr/local
[root@localhost local]# tar jxvf /root/jikesrvm/apache-ant-1.8.2-bin.tar.bz2
<2>设置环境变量ANT_HOME并添加到PATH路径下
[root@localhost etc]# vim profile
#set the ant path
export ANT_HOME=/usr/local/apache-ant-1.8.2
export PATH=$PATH:$ANT_HOME/bin
修改完成后保存退出。
<3>在ant的lib中加入Junit支持:https://github.com/KentBeck/junit/downloads
下载完之后,将其复制/usr/local/apache-ant-1.8.2/lib目录下。
<4>配置文件刷新
[root@localhost jikesrvm]# source /etc/profile
[root@localhost jikesrvm]#
<5>运行测试
[root@localhost jikesrvm]# ant -v
Apache Ant(TM) version 1.8.2 compiled on December 20 2010
Trying the default build file: build.xml
Buildfile: build.xml does not exist!
Build failed
[root@localhost jikesrvm]#
如果看到上面信息,说明安装成功。
【3】C工具链
<2>查看gcc的版本
[root@localhost ~]# gcc -v
使用内建 specs。
目标:i386-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux
线程模型:posix
gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-50)
<3> 对系统中gcc进行升级
[root@localhost ~]# yum update gcc
Loaded plugins: fastestmirror
Determining fastest mirrors
... ...
Complete!
【4】Bison
<1>已安装的bison的版本
[root@localhost ~]# bison -V
bison (GNU Bison) 2.3
Written by Robert Corbett and Richard Stallman.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@localhost ~]#
【5】Perl
查看已安装的perl的版本
[root@localhost ~]# perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
... ...
[root@localhost ~]#
【6】Awk
查看已安装的awk的版本
  [root@localhost ~]# awk --version
GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation.
<1>解压
[root@localhost jikesrvm]# tar jxvf jikesrvm-3.1.1.tar.bz2
在jikesrvm-3.1.1根目录下新建一个文件.ant.properties
[root@localhost jikesrvm]# cd jikesrvm-3.1.1
[root@localhost jikesrvm-3.1.1]# vim .ant.properties
然后将下面内容复制其中

host.name=x86_64-linux

target.name=x86_64-linux

config.name=FastAdaptiveGenMS
components.cache.dir=/root/jikesrvm/jikesrvm-3.1.1/download
classlib.provider=Harmony
harmony.from-hdk=true
harmony.hdk.dir=${HDK_HOME}

保存退出。注意,上面x86_64-linux在build/hosts目录下能找到对应的文件名的。
以上内容参考http://docs.codehaus.org/display/MRP/Building
强调下,上面components.cache.dir是需要组件的缓存目录,设定此目录,如果缺少某些组件可以按提示自动或手动下载到此目录下。内容含义请参考http://jikesrvm.org/Building+the+RVM#BuildingtheRVM-DefiningAntproperties
<2>在jikesrvm-3.3.1根目录下执行ant命令
[root@localhost jikesrvm-3.1.1]# ant
Buildfile: /root/jikesrvm/jikesrvm-3.1.1/build.xml
... ...
 [get] Error getting http://archive.eclipse.org/eclipse/downloads/drops/R-3.2-200606291905/ecj.jar to /root/jikesrvm/jikesrvm-3.1.1/download/ecj-3.2.jar
出现错误,无法下载到ecj.jar包。那么可以按上面的网址手动下载并改名为ecj-3.2,然后将下载到的jikesrvm-3.1.1/download目录下,再次执行ant
[get] To: /root/jikesrvm/jikesrvm-3.1.1/components/classpath/97.2p10/classpath-0.97.2.tar.gz
又是很久没反应,按CTR+C结束当前进程,然后在jikesrvm-3.1.1/download执行
[root@localhost download]# wget ftp://ftp.gnu.org/gnu/classpath/classpath-0.97.2.tar.gz
--2011-12-08 11:49:43--  ftp://ftp.gnu.org/gnu/classpath/classpath-0.97.2.tar.gz
           => `classpath-0.97.2.tar.gz'
正在解析主机 ftp.gnu.org... 140.186.70.20
Connecting to ftp.gnu.org|140.186.70.20|:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。    ==> PWD ... 完成。
==> TYPE I ... 完成。  ==> CWD /gnu/classpath ... 完成。
==> SIZE classpath-0.97.2.tar.gz ... 10318014
==> PASV ... 完成。    ==> RETR classpath-0.97.2.tar.gz ... 完成。
长度:10318014 (9.8M)
等到下载完成后,再次执行ant
BUILD FAILED
/root/jikesrvm/jikesrvm-3.1.1/build.xml:1008: The following error occurred while executing this line:
/root/jikesrvm/jikesrvm-3.1.1/build.xml:858: Error starting modern compiler
如果java 和 javac 以及classpath的路径设置有误会出现此问题。
... ...
[get] Error opening connection java.io.FileNotFoundException: http://www.apache.org/dist/xerces/j/Xerces-J-bin.2.9.1.zip
     [exec]       [get] Error opening connection java.io.FileNotFoundException: http://www.apache.org/dist/xerces/j/Xerces-J-bin.2.9.1.zip
     [exec]       [get] Error opening connection java.io.FileNotFoundException: http://www.apache.org/dist/xerces/j/Xerces-J-bin.2.9.1.zip
     [exec]       [get] Can't get http://www.apache.org/dist/xml/xerces-j/Xerces-J-bin.2.9.1.zip to /root/jikesrvm/jikesrvm-3.1.1/components/harmony/5.0M10p0/harmony/depends/jars/xerces_2.9.1/xerces.zip
     [exec]
     [exec] BUILD FAILED
... ...
解决办法:打开/root/jikesrvm/jikesrvm-3.1.1/components/harmony/5.0M10p0/harmony/make/depends.xml,定位到87行,修改如下(-表示删除,+表示增加):
-            <fileset dir="${xerces.dir}.tmp/xerces-2_9_1">  +            <fileset dir="${xerces.dir}.tmp/xerces-2_10_0">
保存退出后,再次执行ant
 
此题未解,待续。。。 
 
 
二,交叉编译构建
  评论这张
 
阅读(583)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017