在嵌入式linux下搭建java运行环境
来源:互联网 发布:神圣罗马帝国 知乎 编辑:程序博客网 时间:2024/05/21 22:26
交叉编译环境:arm-none-linux-gnueabi-
运行java的虚拟机是jamvm 它需要配合classpath共同使用。
GNU Classpath下载 http://www.gnu.org/software/classpath/downloads/downloads.html
在/usr文件夹下面新建文件夹classpath和jamvm(为了方面移植)
配置:
./configure --prefix=/usr/classpath --disable-gtk-peer --disable-gconf-peer --disable-plugin --with-ecj --host=arm-none-linux-gnueabi –disable-tools
执行:make
出现错误:cpnet.c:583: error: dereferencing type-punned pointer will break strict-aliasing rules
查找百度,给的解释是这样的:he error you are seeing is a warning. By default GNU Classpath is configured to treat warnings as errors. To turn this off, add
--disable-Werror
重新配置:./configure --prefix=/usr/classpath --host=arm-none-linux-gnueabi --disable-examples --without-x --disable-qt-peer --disable-gtk-peer --disable-gconf-peer --disable-plugin --disable-alsa --disable-dssi --disable-Werror --disable-tools
执行make
执行make install
JVM 下载https://sourceforge.net/projects/jamvm/files/jamvm/
配置:
./configure --prefix=/usr/jamvm --with-classpath-install-dir=/usr/classpath --host=arm-none-linux-gnueabi
出现错误:zlib is missing
我移植blueZ的时候安装过zlib,安装在我的/usr/blueZ文件夹下面
重新配置:./configure --prefix=/usr/jamvm --with-classpath-install-dir=/usr/classpath --host=arm-none-linux-gnueabi CFLAGS=-I/usr/blueZ/include LDFLAGS=-L/usr/blueZ/lib
执行make
执行make install
开发板上电,因为classpath和jamvm都是装在/usr/classpath和/usr/jamvm文件夹下面。所以需要将classpath和jamvm两个文件夹复制到开发板的/usr目录下面
配置环境变量:
第一种方法:
vi /etc/profile
在最后一行加入export PATH=$PATH:/usr/jamvm/bin 保存退出
然后执行source /etc/profile
可以通过echo $PATH 来查看结果如下:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/topeet/bin::/usr/jamvm/bin
运行jamvm HelloWorld 出现错误Segmentation fault
我以为是我的环境变量没设置
export LD_LIBRARY_PATH=/usr/classpath/lib/classpath:$LD_LIBRARY_PATH
export BOOTCLASSPATH=/usr/jamvm/share/jamvm/classes.zip:/usr/local/classpath/share/classpath/glibj.zip
设置了之后还是同样的错误。
查找百度,在配置中加入—enable-ffi
./configure --prefix=/usr/jamvm --with-classpath-install-dir=/usr/classpath --enable-ffi --host=arm-none-linux-gnueabi CFLAGS=-I/usr/blueZ/include LDFLAGS=-L/usr/blueZ/lib
出现错误missing ffi.h
解决办法;需要安装libffi ,这个我之前做blueZ移植的时候安装过,我当时的安装文件夹是/usr/blueZ.。所以ffi.h文件是在/usr/blueZ/lib/libffi-3.0.13/include/ 将里面的ffi.h ffitarget.h复制到/usr/blueZ/include中。
重新配置编译
然后执行make
执行make install
将jamvm重新复制到开发板的/usr文件夹下然后运行jamvm
出现错误提示:jamvm: error while loading shared libraries: libffi.so.6: cannot open shared object file: No such file or directory
缺少libffi.so.6 这个文件在/usr/blueZ/lib(我的libffi是安装在/usr/blueZ中的)文件夹下面。我直接将libffi.so、libffi.so.6、libffi.so.6.0.1全部都移植到了开发板的/lib目录下。
再次运行jamvm 成功。
拷贝到开发板/usr文件夹下面,运行jamvm HelloWorld还是出现Segmentation fault 崩溃了。。。。
继续百度,看到一条在jamvm configure时加上 --disable-int-inlining
尝试配置:
./configure --prefix=/usr/jamvm --with-classpath-install-dir=/usr/classpath --enable-ffi--disable-int-inlining --host=arm-none-linux-gnueabi CFLAGS=-I/usr/blueZ/include LDFLAGS=-L/usr/blueZ/lib
然后make然后 make install。将jamvm文件夹复制到开发板/usr文件夹下面。运行
jamvm HelloWorld成功
我试了一下Hellloworld程序在win7下和ubuntu下通过javac编译都可以在开发板上运行,但是win7下编译的却不能在ubuntu上运行,因为本人不是做java开发的,没有花大量时间去深究。
后来尝试用相同的方法编译安装jamvm2.0 成功了
但是在编译classpath0.99时
配置./configure --prefix=/usr/classpath --host=arm-none-linux-gnueabi --disable-examples --without-x --disable-qt-peer --disable-gtk-peer --disable-gconf-peer --disable-plugin --disable-alsa --disable-dssi --disable-Werror --disable-tools
在0.98的时候配置是没有问题的,但是0.99的时候出现问题
conditional "GCJ_JAVAC" was never defined.
根据百度的结果,解决方式是假设GCJ没有定义,但是它也没有用到过,则就把那个if判断给屏蔽了如图所示,用#屏蔽了
但是在make中出现错误不知道怎么解决。另外jamvm的库也可以用openjdk,也就是说用jamvm来替换openjdk的虚拟机
- 在嵌入式linux下搭建java运行环境
- QT在嵌入式Linux环境下运行
- 在Linux下搭建RoR运行环境
- Linux下搭建java web运行环境
- Linux下搭建java web运行环境
- Linux CentOS下搭建JAVA运行环境
- Linux环境下搭建java运行环境tomcat运行
- 在linux下搭建基于S3C6410的嵌入式开发环境
- 在Linux下搭建嵌入式开发环境(一)
- QT4.8.5在linux下搭建嵌入式开发环境
- 在Linux下搭建Java环境
- 在LINUX下搭建JAVA开发环境
- 在 Linux 下搭建 Java 开发环境
- 【服务器】在Linux下搭建java环境
- 嵌入式 ubuntu上搭建java运行环境
- Lucene在Linux下环境的搭建和运行
- Ubuntu下搭建Linux嵌入式开发环境
- 虚拟机Linux下嵌入式开发环境搭建
- 安卓颜色相关
- STL源码剖析-序列式容器之heap和priority_queue
- 关于api-ms-win-crt-runtimel1-1-0dll缺失的解决方案
- 转:飝兒物語的“Linux创建、删除文件夹”
- [045]Python使用技巧总结
- 在嵌入式linux下搭建java运行环境
- 在Linux系统中如何修改文件夹读写权限
- Go获取当前时间
- java面试④数据库部分
- 把apk安装包编译到system.img
- 什么是Git?(看到大牛的解释分享一下)
- 图像的长宽以及灰度、RGB图像的像素原理分布
- Android性能优化-内存泄漏(下)
- Linux基础学习——unit14