龙空技术网

只需几步,轻轻松松编译OpenJDK8

IT乐知 165

前言:

现时咱们对“怎样用cygwin编译c程序”可能比较注重,各位老铁们都想要学习一些“怎样用cygwin编译c程序”的相关内容。那么小编同时在网摘上搜集了一些对于“怎样用cygwin编译c程序””的相关内容,希望朋友们能喜欢,朋友们快快来了解一下吧!

现在在window也可以很轻松的编译OpenJDK8了。而且非常简单。

1、 需要下载

我的电脑上已经有jdk8的环境了。我看网上说要编译openjdk8需要jdk7的环境。不过我没有安装7也编译成功了。

a、openjdk8:需要编译的。

b、Cygwin:编译JDK需要使用Linux上面的一些工具软件,Cygwin是一个在Window上运行这些软件的工具。

c、Visual Studio 2010 Professional:不必说,编译JDK的工具。

d、freetype :OpendJDK中swing和JConsole要使用freetype的字体渲染功能,这里是直接编译好的。GitHub项目ubawurinna/freetype-windows-binaries。

2、安装编译环境

a、解压openjdk.

b、安装Visual Studio 2010 Professional.

一路傻瓜式安装,没有特别配置。

c、安装cygwin:

傻瓜式安装,可以选择安装地址。不知道为什么这一步我的没有,不管网上找了一个加上去,添加如图地址:

然后在下一步有一个选择packages,要选择一些安装包。

在下载的openjdk里面有一个html文件:README-builds.html,打开能找到要下载的包,根据package这一列去搜索,再根据描述去判断,找到后选择版本,然后在后面一栏勾上就可以了。

d、freetype

下载下来后,修改一下文件名称,把win64改成lib。大名称也改下。如下图:

3、开始编译

编译也很简单,就两步:配置和编译。不过配置和编译都是在cygwin里面进行的。在配置和编译过程中似乎必然会出现两个异常,可以提前解决,解决方案看第4步内容。

a、配置

打开cygwin,首先window的所以目录都是挂载在/cygdirve目录下的,所以进入进入jdk根目录命令是"cd /cygdirve/d/tools/openjdk"。然后执行配置命令"./configure --with-freetype=/cygdrive/d/tools/freetype --with-target-bits=64 --enable-debug"。具体如下图:

配置完成如下图:

b、编译

配置完成后直接运行命令"make",出现异常解决后"make clean"后在执行"make"。,"make dist-clean"命令可以清除配置。这个过程用的时间较长,我用了差不多一个小时。完成如下图:

c、验证

进入文件夹"D:\tools\openjdk\build\windows-x86_64-normal-server-fastdebug\jdk\bin",执行命令"javac -version"、"java -version"验证。

4、 异常处理

一共两个异常,配置期一个编译期一个。

第一个配置期异常,在执行了命令

"bash ./configure --with-freetype=/cygdrive/e/freetype --with-target-bits=64"后一般都会有版本太老的问题,如下如图:

这个问题只是openjdk限制了cygwin的版本,cygwin新版本是完全兼容老版本的。所以可以直接注释调openjdk里面的限制。打开文件:D:\tools\openjdk\common\autoconf\generated-configure.sh。如下图:

在文件中搜索"Your cygwin is too old"找到位置。然后注释其中7217到7255行,如下图:

第二个编译期异常如下图:

这是由于cvtres.exe版本错误导致的结果。因为我们安装的Visual Studio 2010 Professional下面也有两个,我们C盘下也有。所以把VS下这两个修改名称就行。修改的两个文件:

D:\tools\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

D:\tools\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe

把他们的名称改成cvtres.exe.bak就可以了。

在C:\Windows\Microsoft.NET\Framework\v4.0.30319下面的cvtres.exe就可以被使用了。

Java程序员日常学习笔记,如理解有误欢迎各位交流讨论!

标签: #怎样用cygwin编译c程序