前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用GCJ编译Java源文件成脱离JRE的exe可执行文件

用GCJ编译Java源文件成脱离JRE的exe可执行文件

作者头像
阿敏总司令
发布2019-02-28 15:23:04
1.7K0
发布2019-02-28 15:23:04
举报
文章被收录于专栏:简单就是美!简单就是美!

阅读更多

用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 均没有成功:(,有成功的指点一下。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2006-03-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档