用GCJ编译Java源文件成脱离JRE的exe可执行文件
一、下载GCJ
到 http://www.thisiscool.com/gcc_mingw.htm 可以看到你有个版本
GCC/GCJ 3.4
GCC/GCJ 4.02
不管三七四十八,都下载下来先:)
二、解压检测,先来测试高版本的GCJ4.02
比如:E:\OpenSource\GCC4,可以看到有个gcc-4.0的目录
把 E:\OpenSource\GCC4\gcc-4.0\bin 这个目录加入到你的系统环境变量PATH当中
然后运行 gcj --help 可以看到帮助
再运行 gcj -v 可以看到当前的版本,如:
Thread model: win32
gcc version 4.0.2
这样说明你的准备环境没有问题了。
三、新建一个Java文件,如HelloGCJ.java文件
public class HelloGCJ
{
public static void main(String[] args)
{
System.out.println("Hello GCJ!");
}
}
四、新建一个批处理文件J2E.bat,内容如下,放在bin目录下,或系统目录下
gcj -c %1.java -o %1.o
gcj --main=%1 -o %1 %1.o
%1
五、编译运行
J2E HelloGCJ
可以看到后成了HelloGCJ.o和HelloGCJ.exe文件,不过这个文件巨大,有8,883,481字节,比较恐怖:)用ASPack压缩一下,压缩率可以达到22%,剩下1,984,512字节,ASPack的压缩力倒是很强:)
========================================================================
现在开始测试GCJ 3.4
第一步,已经下载了
第二步,
解压到:E:\OpenSource\GCC3,可以看到有个gcc-3.4的目录
把 E:\OpenSource\GCC3\gcc-3.4\bin 这个目录加入到你的系统环境变量PATH当中
然后运行 gcj --help 可以看到帮助
再运行 gcj -v 可以看到当前的版本,如:
Thread model: win32
gcc version 3.4.0 20040316 (prerelease)
这样说明你的准备环境没有问题了。
第三步,一样,有了
第四步,一样,有了
第五步、编译运行
J2E HelloGCJ
同样是可以看到后成了HelloGCJ.o和HelloGCJ.exe文件,不过这个文件比刚才用4.02编译的要小很多,才5,167,559字节,我们再用ASPack压缩一下,压缩率可以达到17%,剩下898,560字节,更小了,小了一大半,但是要检测一下看有没有问题才行。
========================================================================
六、确认独立于JRE
为了确认是独立于JRE的,最好放到一个没有任何Java的环境下去跑一下,我有个Win98SE的虚拟机,这样一来就可以确认了
或者先这样来测试一下
PATH=;
这样是把PATH清空,当然无论怎么清空,在Windows下面还是会去找Windows的系统可执行目录的:)
set JAVA_HOME=
把JAVA_HOME也清空,然后再运行一下HelloGCJ.exe文件看看是否可以。
结果:在我的Windows 2000 ADS上面用4.02或3.4编译的或者编译后并ASPack过的都可以运行。
但是,在Windows 98 SE上面用4.02编译的或者编译后并ASPack过的都不能够运行!!!
所以,大家要用哪个版本自己选择。
结束语:这是最简单的一个测试,关于AWT、Swing、SWT、中文问题、线程、文件、IO等等可以参见附带的Samples
要运行Samples,先要找个下载make,并解压后把make.exe扔到bin目录下,然后打开Makefile文件
把是Unix/Linux下面的一些编译指令去掉,比如:rm、chmod、find之类的,等等,如第96行后面的 && chmod +x hang_posix.exe去掉
最后在Samples进行make一下就可以编译Samples了,还是要自己修改一下的,要不然编译还是有问题出现。
不过,要看一下ReadMe.txt文件哦,并不是所有的都能够运行:(
Not all of the samples are used in the testsuite. The GUI samples are built, but not executed.
========================================================================
上面我们下载的都是全打成包的文件,如果你想单独下载的话,可以直接到以下地址去下载
http://prdownloads.sf.net/mingw/
建议按时间排序一下,然后下载以下所需的包的最新的稳定版本。
binutils
gcc-core
gcc-java
iconv
make
mingw-runtime
w32api
下载后按照上述顺序将其解压到相同的目录,例如 E:\OpenSource\GCC\
然后将 E:\OpenSource\GCC\bin 加入 PATH 环境变量中
运行 gcj --help 可以看到帮助
再运行 gcj -v 可以看到当前的版本
出现版本信息说明你的准备环境没有问题了。
不过,千万注意了,也要下载 iconv 要不然根本就不行,而且编译后的.exe文件也必须要这个 iconv.dll 或 libiconv-2.dll 动态链接库的
如果下载 iconv-1.9.1.win32.zip 的话是 iconv.dll ,
下载 libiconv-1.8.0-2003.02.01-1.exe 安装的话是 libiconv-2.dll
iconv是一个语言转换工具。
我尝试过3.4.2、3.4.5版本的,想脱离 iconv 均没有成功:(,有成功的指点一下。
分享到:
相关推荐
语言转换工具,GCJ编译Java源文件成脱离JRE的exe可执行文件后,要执行此文件一般要用到此动态连接库
Java程序编译成exe文件的2个方法。
龙书front代码的gcj编译方法及相关文档,通过gcj将front代码编译为本地代码。
在开发Java应用程序时,通常使用Java编译器将Java源代码(.java)文件编译为字节代码(.class)文件,然后将字节代码加载到目标机,通过目标机上的Java虚拟机(JVM)解释执行。 二、开发环境安装与配置 在Linux下...
首先,Java程序的编译需要使用Java编译器(javac),将Java源代码编译成字节码文件(.class)。然后,将字节码文件加载到目标机上,并通过目标机上的Java虚拟机(JVM)解释执行。然而,在嵌入式系统中,Java虚拟机的...
Java实现百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
收集的java坐标转换工具,包括WGS84、GCJ02B、BD09,及国内纠偏。 收集的java坐标转换工具,包括WGS84、GCJ02B、BD09,及国内纠偏。
火星坐标系GCJ2转换成WGS84坐标系
GPS经纬度偏移java端实现,wgs84转gcj02/gcj02转wgs84,亲测有效,稍微有点小偏差!
java 源码 博客
利用Java代码及参考文件,将火星坐标转换为WGS84坐标,亲测可用,于是共享。
这是Os X Intel的gcj(Gnu Java编译器)的构建。
Java实现windows与Linux平台上的百度坐标系,火星坐标系与大地坐标系之间的相互转换,有不能布署成功的请在线私我
火星坐标系(GCJ-02)转百度坐标系(BD-09)(火星坐标经度,火星坐标纬度),百度坐标数组 百度坐标系(BD-09)转火星坐标系(GCJ-02)(百度坐标纬度,百度坐标经度),火星坐标数组 WGS84转GCJ02(火星坐标系)(WGS84坐标系的经度,...
gcj 好啊 ,gcj好啊
腾讯地图全国地址信息(省、市、区、gcj02 gps)sql文件
执行 Java 应用程序必须安装 Java Runtime Environment(JRE) ,JRE 内部 有一个 Java 虚拟机(Java Virtual Machine,JVM)以及一些标准的类库(Class Library) 。 通过 JVM 的虚拟机才能在电脑系统执行 Java ...
腾讯地图GCJ02坐标与百度BD09坐标相互转换 GCJ02坐标系:即火星坐标系,WGS84坐标系经加密后的坐标系。 BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系。
gcj02与wgs84的相互转换 js代码 高德 百度,腾讯等与wgs84坐标的转换方法
gps坐标转地图坐标算法,纠偏算法。GPS坐标就是传说中大地坐标系统(WGS-84),...所以大家都会使用GCJ-02坐标系,如腾讯搜搜地图、搜狐搜狗地图、阿里云地图、高德MapABC地图、灵图51ditu地图。百度坐标系统是BD-09。