极路由4pro安装java(Jamvm 2.0.0 + gnu classpath 0.9.8)

首先试了gnu classpath 0.9.9,编译不过后来改成0.9.8

编译环境

OS: 64位 Ubuntu 16.04 LTS(vmware虚拟机)
SDK: 用之前讲过的官方SDKmtmips


除了官方文档要装的上面这些东西,还要手动装一个g++-multilib,否则编译classpath会出错,另外要装tar,方便压缩解压文件

sudo apt-get install g++-multilib tar

进入交叉编译环境

进入SDK解压目录OpenWrt-SDK-mtmips-for-redhat-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2
运行

./scripts/cross-compile.sh ./

可以看到终端显示黄色文字cross-compile@mipsel:,说明进入了交叉编译环境
之后都在这个交叉编译环境中操作

之后找一个空目录做编译

mkdir ~/show
cd ~/show

交叉编译classpath

wget ftp://ftp.gnu.org/gnu/classpath/classpath-0.98.tar.gz
tar -zxvf classpath-0.98.tar.gz
cd classpath-0.98/
sudo mkdir -p /usr/classpath
./configure --prefix=/usr/classpath --disable-examples --without-x --disable-qt-peer --disable-gtk-peer --disable-gconf-peer --disable-plugin --disable-alsa --disable-dssi --disable-Werror --disable-tools --host=mipsel-openwrt-linux
make
sudo make install

操作完成后,classpath就会安装到/usr/classpath目录,接着校验安装后的classpath是否是mipsel(32位小端的mips架构的cpu)平台的文件:

file /usr/classpath/lib/classpath/libjavaio.so.0.0.0

如果显示ELF 32-bit LSB shared object, MIPS, MIPS32 rel2 version 1 (SYSV),说明编译正确了

把整个/usr/classpath目录打包传给极路由,注意把/soft替换成外接硬盘的目录防止路由器空间不足

zip -r classpath.zip /usr/classpath
scp -P 1022 classpath.zip root@192.168.199.1:/soft

交叉编译jamvm

cd ~/show
wget https://jaist.dl.sourceforge.net/project/jamvm/jamvm/JamVM%202.0.0/jamvm-2.0.0.tar.gz
tar -zxvf jamvm-2.0.0.tar.gz
cd jamvm-2.0.0/
sudo mkdir -p /usr/jamvm
./configure --prefix=/usr/jamvm --host=mipsel-openwrt-linux
make
sudo make install

同样检查安装后的文件是否是mipsel平台的:

file /usr/jamvm/bin/jamvm

打包上传

zip -r jamvm.zip /usr/jamvm
scp -P 1022 jamvm.zip root@192.168.199.1:/soft

给路由器安装classpath和jamvm

先检查jamvm能否打印版本号:

cd /soft
mkdir classpath && cd classpath && unzip ../classpath.zip && cd ..
mkdir jamvm && cd jamvm && unzip ../jamvm.zip && cd ..
jamvm/usr/jamvm/bin/jamvm -version

注意看上面红框框出来的三个路径必须要存在,否则无法运行字节码,所以我们可以加上软连接指过去:

ln -s classpath/usr/classpath /usr/local/classpath
ln -s jamvm/usr/jamvm /usr/jamvm

最后加上/etc/profile的环境变量,这个搞过java的都懂就不说了

在x86平台编译好java1.5的字节码,然后上传到路由器中用jam跑:

打完收工

注意jamvm+classpath只能支持到java1.5,如果想支持到1.8的话,需要jamvm结合openjdk8才行,但现在openjdk8还不支持mipsel

分享一下编译好的classpath和jamvm:

链接:https://pan.baidu.com/s/1sll0W6x 密码:6mui

这个版本只支持tomcat 5.0、spring 2.5.6、maven 3.1.1 及之前的版本。tomcat需要把bin/setclasspath.sh 中检查java路径是否合法的代码去除掉,jsp也别想了,没有javac编译器

原文地址:https://www.cnblogs.com/lanhj/p/8205709.html