在 OpenWrt 上安装 JamVM 2.0:如何更改 Makefile 以便它使用 OpenJDK 库?
Installing JamVM 2.0 on OpenWrt : how to change the Makefile so it uses OpenJDK library?
我目前想在 OpenWrt 环境中安装 OpenHAB(目前是在具有 x86 架构的虚拟机上),并且它需要具有至少版本为 1.6 的 Java 运行时。
所以我使用了 OpenWrt 14.07(打破障碍)SDK 交叉编译器,它包括一个名为 JamVM 的紧凑型 Java 机器。对于版本 1.x,JamVM 使用提供 Java 1.5 的 GNU 类路径,但自 JamVM 2.0 起,该程序允许使用提供 Java 1.6 至 1.9 的 OpenJDK。我只想生成包含此 OpenJDK 库的 JamVM 包,但我不熟悉 Makefile 配置。这是设置了 GNU 类路径库的当前 Makefile:
#
# Copyright (C) 2006-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=jamvm
PKG_VERSION:=2.0.0
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0+
PKG_MAINTAINER:=Dana H. Myers <k6jq@comcast.net>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
PKG_MD5SUM:=a6e3321ef4b3cfb4afc20bd75452e11e
PKG_USE_MIPS16:=0
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
define Package/jamvm
SUBMENU:=Java
SECTION:=lang
CATEGORY:=Languages
TITLE:=A compact Java Virtual Machine
URL:=http://sourceforge.net/projects/jamvm
DEPENDS:=+zlib +libpthread +librt +classpath @!avr32
endef
define Package/jamvm/description
JamVM is a new Java Virtual Machine which conforms to the JVM
specification version (blue book). In comparison to most other VM's (free
and commercial) it is extremely small.However, unlike other small VMs
(e.g. KVM) it is designed to support the full specification, and includes
support for object finalisation, Soft/Weak/Phantom References, the Java
Native Interface (JNI) and the Reflection API.
endef
CONFIGURE_ARGS += \
--with-java-runtime-library=gnuclasspath \
--with-classpath-install-dir=/usr \
--disable-int-inlining \
--disable-shared \
--without-pic
MAKE_FLAGS += \
GLIBJ_ZIP=$(STAGING_DIR)/usr/share/classpath/glibj.zip
define Package/jamvm/install
$(INSTALL_DIR) $(1)/usr
$(CP) \
$(PKG_INSTALL_DIR)/usr/bin \
$(PKG_INSTALL_DIR)/usr/share \
$(1)/usr/
endef
define Build/InstallDev
$(CP) $(PKG_INSTALL_DIR)/* $(1)/
endef
$(eval $(call BuildPackage,jamvm))
我知道在CONFIGURE_ARGS,我可以换行
--with-java-runtime-library=gnuclasspath \
到这个
--with-java-runtime-library=openjdk7 \
但是通过这个单一的更改,我的包在我编译时无法编译
make /packages/lang/jamvm
有人知道该怎么做吗?
谢谢大家
没那么容易。在 OpenWRT 邮件列表上有一些来自 Waldemar Brodkorb 的针对 OpenJDK 7 的补丁和一些针对 OpenJDK 6 的旧补丁。但据我了解,它们只能让您构建 x86 版本。
我认为从 OpenHAB 捆绑包中删除 java 版本限制比使用 JamVM 交叉构建 OpenJDK 更容易 - 不是开玩笑!
我目前想在 OpenWrt 环境中安装 OpenHAB(目前是在具有 x86 架构的虚拟机上),并且它需要具有至少版本为 1.6 的 Java 运行时。
所以我使用了 OpenWrt 14.07(打破障碍)SDK 交叉编译器,它包括一个名为 JamVM 的紧凑型 Java 机器。对于版本 1.x,JamVM 使用提供 Java 1.5 的 GNU 类路径,但自 JamVM 2.0 起,该程序允许使用提供 Java 1.6 至 1.9 的 OpenJDK。我只想生成包含此 OpenJDK 库的 JamVM 包,但我不熟悉 Makefile 配置。这是设置了 GNU 类路径库的当前 Makefile:
#
# Copyright (C) 2006-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=jamvm
PKG_VERSION:=2.0.0
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0+
PKG_MAINTAINER:=Dana H. Myers <k6jq@comcast.net>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
PKG_MD5SUM:=a6e3321ef4b3cfb4afc20bd75452e11e
PKG_USE_MIPS16:=0
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
define Package/jamvm
SUBMENU:=Java
SECTION:=lang
CATEGORY:=Languages
TITLE:=A compact Java Virtual Machine
URL:=http://sourceforge.net/projects/jamvm
DEPENDS:=+zlib +libpthread +librt +classpath @!avr32
endef
define Package/jamvm/description
JamVM is a new Java Virtual Machine which conforms to the JVM
specification version (blue book). In comparison to most other VM's (free
and commercial) it is extremely small.However, unlike other small VMs
(e.g. KVM) it is designed to support the full specification, and includes
support for object finalisation, Soft/Weak/Phantom References, the Java
Native Interface (JNI) and the Reflection API.
endef
CONFIGURE_ARGS += \
--with-java-runtime-library=gnuclasspath \
--with-classpath-install-dir=/usr \
--disable-int-inlining \
--disable-shared \
--without-pic
MAKE_FLAGS += \
GLIBJ_ZIP=$(STAGING_DIR)/usr/share/classpath/glibj.zip
define Package/jamvm/install
$(INSTALL_DIR) $(1)/usr
$(CP) \
$(PKG_INSTALL_DIR)/usr/bin \
$(PKG_INSTALL_DIR)/usr/share \
$(1)/usr/
endef
define Build/InstallDev
$(CP) $(PKG_INSTALL_DIR)/* $(1)/
endef
$(eval $(call BuildPackage,jamvm))
我知道在CONFIGURE_ARGS,我可以换行
--with-java-runtime-library=gnuclasspath \
到这个
--with-java-runtime-library=openjdk7 \
但是通过这个单一的更改,我的包在我编译时无法编译
make /packages/lang/jamvm
有人知道该怎么做吗?
谢谢大家
没那么容易。在 OpenWRT 邮件列表上有一些来自 Waldemar Brodkorb 的针对 OpenJDK 7 的补丁和一些针对 OpenJDK 6 的旧补丁。但据我了解,它们只能让您构建 x86 版本。
我认为从 OpenHAB 捆绑包中删除 java 版本限制比使用 JamVM 交叉构建 OpenJDK 更容易 - 不是开玩笑!