win8.1 cygwin编译java轻量虚拟机avian

1.背景

  昨天在网上看到别人用aauto写本地小程序写的很爽,我觉得如果java的jre能小一点,凭借java庞大的第三方类库写小工具也还算不错的。本人就经常用eclipse+一些commons包写些小工具软件。不过可惜的是只能自己用,对于没装java环境的人来说就麻烦了。所以就去网上找到了一个轻量级java虚拟机avian。但是在编译和安装过程中遇到了很多困难,特此记录。

2.开始

  废话少说,先说重点。其实在这个软件的gihub首页以及清晰的讲述了安装教程,无奈这是英文的,而且主要是自己没有过编译开源程序的经验,也没有玩过什么msys,cygwin的linux编译环境。这次也算是当作一次练习,毕竟以前我只要遇到需要自己编译的开源项目就敬而远之。

  其实安装的难点有两个,第一个在http://kingj.iteye.com/blog/1614892这个博客中已经一语道破了。。win32/64文件夹要和avian的解压文件夹并列。。我一直以为要合并着来着,官网也没有特殊说明,本人也没有玩过linux命令行,所以。。不说多了说多了都是泪。。

  第二个就是cygwin的安装。这个的安装注定是要折腾的,虽然网上到处都是教程,但是问题是这些教程有很多细节都没有明说啊,也饶了不少远路。除了一般教程都说的要按照的

binutils、gcc、gcc-mingw、gdb之外,还要安装make,zlib(第一次安装我照着教程装忘记装avian需要的make了,吐血。。)。这都是32位的,如果你要安装64位的则还有make, gcc-mingw-g++, mingw64-i686-gcc-g++, mingw64-x86_64-gcc-g++, mingw64-x86_64-zlib(这几个其实avian官网有介绍,但是没有介绍zlib。。因为是写在中间,所以我也是后来才看到的,这排版真心不科学。。)反正我电脑是64位的,所以我这几个都安装了,避免出现任何问题。。

环境装好了,然后需要的就是照着官网的教程敲命令 了

这里以32位为例。因为在64位下可以编译32位的,但是编译成64位的就不能在32位运行了。

$ git clone https://github.com/ReadyTalk/win32.git ../win32 #官网是下载win64,我们全部改成win32。不过那个官网的git地址有问题,自己去github下载zip复制也行
$ export JAVA_HOME="/cygdrive/c/Program Files/Java/jdk1.7.0_45" #引入JAVA_HOME,相当于windows下cmd的setpath吧
$ make platform=windows arch=i386   #这里需要注意,没有指定编译环境默认就是本机环境,如果电脑是64位的,那么之前你下载的win32头文件会冲突,所以必须指定为i386,如果你是想编译64位的,则之前的git clone就应该是64位的
$ build/windows-i386/avian -cp build/windows-i386/test Hello  #这个测试程序运行成功就代表编译成功了。

  

  然后将虚拟机嵌入打包,github上有详细的教程。等我以后再整理。。

win8.1 cygwin编译java轻量虚拟机avian

时间: 2024-08-12 03:25:51

win8.1 cygwin编译java轻量虚拟机avian的相关文章

OSCHina技术导向:Java轻量web开发框架——JFinal

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再拥有ruby.python.php等动态语言的开发效率!为您节约更多时间,去陪恋人.家人和朋友 :) JFinal有如下主要特点: MVC架构,设计精巧,使用简单 遵循COC原则,零配置,无xml 独创Db + Record模式,灵活便利 ActiveRecord支持,使数据库开发极致快速 自动加载修改后的

Java Synchronized 锁的实现原理详解及偏向锁-轻量锁-重量锁

Synchronize是重量级锁吗?是互斥锁吗? 它的实现原理? 前言 线程安全是并发编程中的重要关注点,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多个线程共同操作共享数据.因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式叫互斥锁,即能达到互斥访问目的的锁,也就是说当一个共享数据被当前正在访问的线程加上互斥锁后,在同一个时刻,其他线程只

Java Synchronized 锁的实现原理与应用 (偏向锁,轻量锁,重量锁)

简介 在Java SE 1.6之前,Synchronized被称为重量级锁.在SE 1.6之后进行了各种优化,就出现了偏向锁,轻量锁,目的是为了减少获得锁和释放锁带来的性能消耗. Synchroized的使用(三种形式)(1) 对于普通同步方法,锁是当前实例对象.如下代码示例:解释:对于set和get方法来说,都是在方法上使用了同步关键字,所以他们是同步方法,锁的就是当前的实例对象,怎么理解了,看下面的main方法,就是这个new的实例对象.所以他们的锁对象都是synchronizedMetho

通俗易懂 悲观锁、乐观锁、可重入锁、自旋锁、偏向锁、轻量/重量级锁、读写锁、各种锁及其Java实现!

网上关于Java中锁的话题可以说资料相当丰富,但相关内容总感觉是一大串术语的罗列,让人云里雾里,读完就忘.本文希望能为Java新人做一篇通俗易懂的整合,旨在消除对各种各样锁的术语的恐惧感,对每种锁的底层实现浅尝辄止,但是在需要时能够知道去查什么. 首先要打消一种想法,就是一个锁只能属于一种分类.其实并不是这样,比如一个锁可以同时是悲观锁.可重入锁.公平锁.可中断锁等等,就像一个人可以是男人.医生.健身爱好者.游戏玩家,这并不矛盾.OK,国际惯例,上干货. 〇.synchronized与Lock

写文章 通俗易懂 悲观锁、乐观锁、可重入锁、自旋锁、偏向锁、轻量/重量级锁、读写锁、各种锁及其Java实现!

网上关于Java中锁的话题可以说资料相当丰富,但相关内容总感觉是一大串术语的罗列,让人云里雾里,读完就忘.本文希望能为Java新人做一篇通俗易懂的整合,旨在消除对各种各样锁的术语的恐惧感,对每种锁的底层实现浅尝辄止,但是在需要时能够知道去查什么. 首先要打消一种想法,就是一个锁只能属于一种分类.其实并不是这样,比如一个锁可以同时是悲观锁.可重入锁.公平锁.可中断锁等等,就像一个人可以是男人.医生.健身爱好者.游戏玩家,这并不矛盾.OK,国际惯例,上干货. 〇.synchronized与Lock

OWIN轻量型框架介绍

OWIN轻量型框架介绍 阅读目录 引言 框架的特色 如何启动 各项功能 静态路由的3种写法 伪静态路由的支持 处理Form表单提交的文件 流式处理Post请求的数据 多种请求类型自动识别 响应处理 请求响应上下文 自定义默认处理函数 内置各种便捷函数 复合类型的请求处理 框架的扩展 静态内容的支持 跨域Post的支持 基础类型继承灵活处理 尾声 回到顶部 引言 什么是OWIN,我就不介绍了,请自行搜索,这里主要是介绍自行开发的OWIN框架的特点和用法.由于.NET的web框架都比较庞大,导致性能

Bourbon – 简单、轻量的 Sass 混入库

Bourbon 是一个简单易用的 Sass 混入(Mixin)库,无需配置.该混入包含用于支持所有现代浏览器的 CSS3 属性前缀.前缀需要确保在旧的浏览器支持优雅降级.Bourbon 使用 SCSS 语法. 您可能感兴趣的相关文章 真是好东西!13种非常动感的页面加载动画效果 你见过吗?9款超炫的复选框(Checkbox)效果 超赞!基于 Bootstrap 的响应式的后台管理模板 太赞了!超炫的页面切换动画效果[附源码下载] 创意无限!一组网页边栏过渡动画[附源码下载] 立即下载      

基于netty轻量的高性能分布式RPC服务框架forest<下篇>

基于netty轻量的高性能分布式RPC服务框架forest<上篇> 文章已经简单介绍了forest的快速入门,本文旨在介绍forest用户指南. 基本介绍 Forest是一套基于java开发的RPC框架,除了常规的点对点调用外,Motan还提供服务治理功能,包括服务节点的自动发现.摘除.高可用和负载均衡等. 架构概述 Forest中分为服务提供方(RPC Server),服务调用方(RPC Client)和服务注册中心(Registry)三个角色. Server提供服务,向Registry注册

Android轻量缓存框架--ASimpleCache

[转] 大神真面目 稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 编辑推荐: 做Android应用开发的同学们相信对“缓存”这个词不陌生,缓存可能有多方面的概念,这里大概列举下程序开发的缓存大概有哪些: 1.服务端控制缓存 如volley请求库,便是通过服务端的“Cache-Control”和“max-age”来告诉客户端有没有缓存以及缓存的时间,也是推荐的使用