jamvm-1.4.3,classpath-0.92移植到arm版上和ubuntu上

本文详细介绍如何在Ubuntu环境下使用arm-linux-gcc-4.3.2编译classpath-0.92及jamvm-1.4.3,并将它们移植到ARM板的过程。文章还分享了解决移植过程中遇到的问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

移植jamvm虚拟机到arm板

soft environment:

OS:ubuntu11.10

compiler:arm-linux-gcc-4.3.2

transpantation target:

arm-linux-gcc:arm-linux-gcc-4.3.2

java virtual machine:jamvm-1.4.3

classpath:classpath-0.92 

 

一.安装arm-linux-gcc

使用

二.编译classpath-0.92

1.下载

http://savannah.gnu.org/projects/classpath

ftp://ftp.gnu.org/pub/gnu/classpath/

http://www.gnu.ort/software/classpath/

网址中有很多版本的classpath,只要classpath-0.92这个版本的

2.解压

tar -zxvf classpath-0.92 -C ./

解压到当前目录下,获得classpath-0.92文件夹

3.进入classpath-0.92文件夹(整个操作最好都在家目录下运行,不要使用sudo,生成的makefile,也需要sudo,在能够有权限执行)

./configure CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-ld RANLIB=arm-linux-ranlib STRIP=arm-linux-strip --host=arm-linux --disable-gtk-peer --disable-gconf-peer --disable-plugin --with-jikes --with-jni --prefix=/home/cp/classpath

CC详解:

CC  是编译的前端程序,它通过调用其他程序来实现将程序源文件编译成目标文件的功能编译时,它首先调用预处理程序(cpp)对输入的源程序进行处理,然后调用 cc1 将预处理后的程序编译成汇编代码,最后由arm-elf-as将汇编代码编译成目标代码。

CC具有丰富的命令选项,可以控制编译的各个阶段,满足用户的各种编译需求。

AS详解:

AS将汇编语言程序转换为ELF (Executable and Linking Format,执行时链接文件格式)格式的可重定位目标代码,这些目标代码同其它目标模块或函数库易于定位和链接。

AS产生一个交叉参考表和一个标准的符号表,产生的代码和数据能够放在多个区 (Section)中。

AR详解:

AR 将多个可重定位的目标模块归档为一个函数库文件。采用函数库文件,应用程序能够从该文件中自动装载要参考的函数模块,同时将应用程序中频繁调用的函数放入函数库文件中,易于应用程序的开发管理。arm-elf-ar支持ELF格式的函数库文件.

用来管理和维护静态库,但是不更新库的符号索引表,更新库的符号索引表的工作由ranlib或者ar -s来实现

RANLIB详解

RANLIB 是用来更新库的符号索引表,向某一个库文件增加了一个.o文件之后,必须是用ranlib来更新符号索引表,才能访问刚刚增加的.o的中全局变量和函数。

LD详解:

LD根据链接定位文件Linkcmds中的代码区、数据区、BSS区和栈区等定位信息,将可重定位的目标模块链接成一个单一的、绝对定位的目标程序。该目标程序是ELF格式,并且可以包含调试信息。

LD会产生一个内存映象文件Map.txt,该文件显示所有目标模块、区和符号的绝对定位地址。它也产生交叉参考列表,显示参考每个全局符号的目标模块。

LD支持将多个目标模块链接成一个单一的、绝对定位的目标程序,也能够依此对目标模块进行链接,这个特性称为增量链接(Incremental Linking)。

假如输入文件是一个函数库,arm-elf-ld会自动从函数库装载被其它目标模块参考的函数模块。LD与其它链接程序相比,能提供更有帮助的诊断信息。许多链接器遇到第一个错误即放弃链接,而arm-elf-ld只要有可能都继续执行,帮助用户识别其它错误,有时甚至能获得输出代码。 

 

STRIP详解

主要用来去除执行文件或者库文件的调试信息。

--disable-gtk-peer

--disable-gconf-peer 这个表示编译的类库不支持窗口调用

 

--disable-plugin 还不知道

 

--with-jikes

--with-jni

这两个还不知到

--prefix 指定make install 的时候 将classpath库文件安装的位置

4.make;make install

注意 以上动作都最好在自己家目录进行操作,并且不要用sudo

 

三.编译jamvm-1.4.3

1.下载,

比较好的网站是在sourceforge.net这个网站搜索jamvm

找到jamvm-1.4.3.tar.gz

2.解压

tar -zxvf jamvm-1.4.3.tar.gz -C ./

获得jamvm-1.4.3文件夹

3.进入jamvm-1.4.3文件夹

./configure CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-ld CPP=arm-linux-cpp RANLIB=arm-linux-ranlib STRIP=arm-linux-strip --host=arm-linux --prefix=/home/cp/jamvm --with-class-path-install-dir=/home/cp/classpath

--with-class-path-install-dir 表示classpath安装的目录

--frefix 表示自己安装的目录

 

四.移植classpath和jamvm

通过以上步骤之后会获取到classpath和jamvm两个文件

将这两个文件复制到开发板上

要注意的是,classpath/lib/classpath 这个文件夹下是库文件,有很多的.a或者.la等静态库文件,也有.so*动态库文件,还有链接到动态库文件的软链接文件(他们必须依赖他们所链接动态库文件),一定要将这三个类型的文件复制过去,链接文件作为动态库文件的别名,让动态库文件具有更好的通用性。所以软件接文件一定要有

如果是在相同的文件系统下进行复制的话,cp命令满足以下规则

       不带参数的cp对链接文件进行复制的时候,会直接复制动态库文件的副本,这样做其实也可以,但是这样就会增加整个库文件的大小,所以要保证复制的是软连接文件,那么一定要加上-l 参数

如果在不同的文件系统下进行复制的话,

       1.这样就必须是用不带参数的cp,保证复制了具有软链接名的动态库文件副本

      2.先不复制软件文件,在移植的系统上进行 “ln -s  动态链接库 软连接库名 ” 这个名进行一个个的创建

 

如果在相同的文件系统下进行移动的话

        不带参数的mv,直接就具有保存软链接文件 的连接属性的功能,所以在相同文件系统下进行移动软链接的话,使用不带参数的mv是一个比较好的选择

但是在不同的文件系统下进行移动的话,mv就无能为力了,

 

经过上面的步骤之后,基本上已经一直完成,还有一个步骤就是在arm板上配置环境变量BOOTCLASSPATH,PATH,LD_PIBRARY_PATH的位置

我将classpath和jamvm移植到了/opt下

下面是我配置的路径

export BOOTCLASSPATH=/opt/jamvm/share/jamvm/classes.zip:/opt/jamvm/lib/classpath/share/classpath/glibj.zip
export LD_LIBRARY_PATH=/opt/jamvm/lib/classpath/lib/classpath/
export PATH=$PATH:/opt/jamvm/bin/

还有一种写法

BOOTCLASSPATH=/opt/jamvm/share/jamvm/classes.zip:/opt/jamvm/lib/classpath/share/classpath/glibj.zip
LD_LIBRARY_PATH=/opt/jamvm/lib/classpath/lib/classpath/
PATH=$PATH:/opt/jamvm/bin/

export BOOTCLASSPATH LD_LIBRARY_PATH PATH

将以上命令写入/etc/profile下面(我在我的arm板上试过写在/etc/init.d/rcS下面,重启之后不行,但是写在profile下就可以),重新启动一下,就行了

还有一些环境变量CLASSPATH,实际上,我们是不需要配置的,如果配置了的话,那么我们的.jar文件只能在CLASSPATH这个环境变量下指定的目录下进行工作

五.在arm上运行程序

遇到了如下的问题

1:

使用 jamvm -jar a.jar   (要注意的是,在linux(arm板上或者是ubuntu上)的命令行下,一定不要只运行.class文件,而是要运行.jar文件,对于单个文件的工程生成j.ar好说,但是对于多个文件或者说是多个工程生成.jar文件包,则在eclipse下是可以使用某一个插件的,至于是哪一个插件,暂时忘记了名字)

cannot create system class loader

Exception ocuured whiel printing exception(java/lang/NoClassDefFoundError)...

Original exception was java/lang/UnsatisfiedLinkError

这个错误实际上是,刚刚复制的过程中classpath/lib/classpath这个文件夹下的软链接文件没有复制过来,我是使用sd卡拷贝的,所以遇到了这个情况,所以

解决方法:1.按原来的classpath/lib/classpath路径下,在这个文件夹下增加这些软链接文件,或者直接使用不带参数的cp,这样,库文件就会变得比较大一点

如果是同一个文件系统下的复制的话,就不会出现上述的问题了

2.使用jamvm -verbose:class -jar a.jar 就会看到一些调试信息,让我可以定位到时哪一个地方出现了问题

3.千万不要直接运行.class 文件,会出现问题的,要打成.jar包



 

 

  

 

 

 

内容概要:该PPT详细介绍了企业架构设计的方法论,涵盖业务架构、数据架构、应用架构技术架构四大核心模块。首先分析了企业架构现状,包括业务、数据、应用技术四大架构的内容关系,明确了企业架构设计的重要性。接着,阐述了新企业架构总体框架(CSG-EAF 2.0)的形成过程,强调其融合了传统架构设计(TOGAF)领域驱动设计(DDD)的优势,以适应数字化转型需求。业务架构部分通过梳理企业级专业级价值流,细化业务能力、流程对象,确保业务战略的有效落地。数据架构部分则遵循五大原则,确保数据的准确、一致高效使用。应用架构方面,提出了分层解耦服务化的设计原则,以提高灵活性响应速度。最后,技术架构部分围绕技术框架、组件、平台部署节点进行了详细设计,确保技术架构的稳定性扩展性。 适合人群:适用于具有一定企业架构设计经验的IT架构师、项目经理业务分析师,特别是那些希望深入了解如何将企业架构设计与数字化转型相结合的专业人士。 使用场景及目标:①帮助企业组织梳理业务流程,优化业务能力,实现战略目标;②指导数据管理应用开发,确保数据的一致性应用的高效性;③为技术选型系统部署提供科学依据,确保技术架构的稳定性扩展性。 阅读建议:此资源内容详尽,涵盖企业架构设计的各个方面。建议读者在学习过程中,结合实际案例进行理解实践,重点关注各架构模块之间的关联协同,以便更好地应用于实际工作中。
资 源 简 介 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。本文简要的阐述了ICA的发展、应用现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系, 详 情 说 明 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。 本文简要的阐述了ICA的发展、应用现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系,在此基础上重点分析了一种快速ICA实现算法一FastICA。物质的非线性荧光谱信号可以看成是由多个相互独立的源信号组合成的混合信号,而这些独立的源信号可以看成是光谱的特征信号。为了更好的了解光谱信号的特征,本文利用独立分量分析的思想方法,提出了利用FastICA算法提取光谱信号的特征的方案,并进行了详细的仿真实验。 此外,我们还进行了进一步的研究,探索了其他可能的ICA应用领域,如音乐信号处理、图像处理以及金融数据分析等。通过在这些领域中的实验应用,我们发现ICA在提取信号特征、降噪信号分离等方面具有广泛的潜力应用前景。
标题Spring框架在大型超市前后台系统中的应用研究AI更换标题第1章引言介绍研究背景、意义,分析国内外在该领域的研究现状,并概述论文的研究方法创新点。1.1研究背景与意义阐述Spring框架在大型超市前后台系统中的应用背景及其实际意义。1.2国内外研究现状分析国内外关于Spring框架在大型超市前后台系统中的应用研究现状。1.3研究方法与创新点介绍论文的研究方法,并突出论文的创新之处。第2章Spring框架及相关技术概述对Spring框架进行简要介绍,包括其核心特性相关技术。2.1Spring框架简介概述Spring框架的基本概念、主要特点优势。2.2Spring框架的核心组件详细介绍Spring框架的核心组件,如IoC容器、AOP等。2.3与Spring框架相关的技术阐述与Spring框架紧密相关的技术,如Spring MVC、Spring Data等。第3章大型超市前后台系统需求分析对大型超市前后台系统的需求进行详细分析,为后续系统设计奠定基础。3.1前台系统需求分析分析前台系统的功能需求,如商品展示、购物车管理等。3.2后台系统需求分析分析后台系统的功能需求,如商品管理、订单处理等。3.3非功能性需求分析讨论系统的性能、安全性等非功能性需求。第4章基于Spring框架的大型超市前后台系统设计根据需求分析结果,设计基于Spring框架的大型超市前后台系统。4.1系统架构设计设计系统的整体架构,包括前后台系统的交互方式、数据流向等。4.2数据库设计设计系统的数据库结构,包括表结构、数据关系等。4.3界面设计设计前后台系统的用户界面,确保用户友好性交互性。第5章系统实现与测试详细阐述系统的实现过程,并对系统进行测试以验证其功能性能。5.1系统实现按照系统设计,实现前后台系统的各个功能模块。5.2系统测试对系统进行功能测试、性能测试等,确保系统满足需求并具有稳定性
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值