当前位置: 首页>移动开发>正文

opencv 交叉编译arm 交叉编译openjdk

   一年前在ubuntu 14.04上编译成功了jdk1.8,前不久换了deepin 15来用(可以用windows下面的几个常用软件和下载工具+Android源代码编译+商店配置好各种开箱即用的开发工具,没理由回ubuntu了),jdk源代码运行环境都没有了,只能重新搞过。因为,deepin15及ubuntu 16.10这种高版本用ubuntu 14.04这种低版本编译方法会出现各种问题,特别有些依赖问题只有deepin15/Debian高版本系列才会有,特此总结一下,供在deepin系统上以Java为业的网友做学习提高之用。

 OpenJDK的编译分为四部分:1 下载源代码,2 编译环境准备,3 高版本Linux问题处理 4 编译

一 下载源代码

    1年前的话,我是直接到openJdk网站 http://download.java.net/openjdk/jdk8/ 去下载打包好的源代码包,结果今天再去看的话,下载链接还是哪个,但点进去,已经被oracle这个货给和谐了。所以,决定使用官方第二种方式,hg下载,类似git的下载方式,下载Jdk8的源代码,方法如下:

$sudo apt-get install mercurial -y
 $hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/  
 $cd jdk8u
 $sh get_source.sh

这里会正式下载每个包的源代码,大概是800多M,速度并不慢,看各位的网速吧。

二 编译环境的准备

1) 设置环境变量

    首先,要说一下,构建openJDK要一个药引,这个药引叫boot jdk,这个工具一般已经集成在普通的jdk中了,所以,在这之前一定要安装一个普通的JDK7到系统上(不能比jdk8高,也不能太低,只能是低一个版本,java的二进制包安装方法,这里就不介绍了。~题外话,当今的编程语言版本基本都是用自家的低版本去编译出来的),然后继续在自家根目录.bashrc里边添加以下变量。

代码
#build openjdk option
export SKIP_DEBUG_BUILD=false    
export SKIP_FASTDEBUG_BUILD=true    
export DEBUG_NAME=debug     
export LANG=C     
export ALLOW_DOWNLOADS=true 
export USE_PRECOMPILED_HEADER=true   

export BUILD_LANGTOOLS=true  
export BUILD_JAXP=true  
export BUILD_JAXWS=true  
export BUILD_CORBA=true  
export BUILD_HOSTPOT=true  
export BUILD_JDK=true  
BUILD_DEPLOY=false  

unset CLASSPATH    
unset JAVA_HOME

2)配置编译环境
代码:
$cd jdk8u{jdk源代码根目录}
$sh configure 或者 bash configure
该过程会检测构建环境是否符合要求,如有问题,它会给出提示。下面先给出我碰到的要安装的库文件:

代码:
ubuntu和debian系统
$sudo apt-get install libxext-dev libxrender-dev libxtst-dev libxt-dev
$sudo apt-get install libcups2-dev
$sudo apt-get install libfreetype6-dev
$sudo apt-get install build-essential    
$sudo apt-get install ant
$sudo apt-get install xorg-dev
Fedora系统---没错,我还在Feodra上面试过,就下面安装依赖库不同,其他的一样.
$sudo yum groupinstall "Development Tools"
$sudo yum install gcc-c++
$sudo yum install libXtst-devel libXt-devel libXrender-devel
$sudo yum install cups-devel
$sudo yum install freetype-devel
$sudo yum install alsa-lib-devel


后面可能,大部分还有继续安装的缺失的工具,都可以通过提示apt安装即可。说一下deepin15/debian没有的库文件安装:

libX11-dev,这个库是没有的预装的,库里也没记录。上网到debian库找,

debian库总地址,以后大家缺少包都可以上debian库里找。

https://www.debian.org/distrib/packages libX11-dev地址:

http://mirrors.ustc.edu.cn/debian/pool/main/libx/libx11/libx11-dev_1.6.4-3_amd64.deb

下载后安装
$sudo dpkg -i libx11-dev_1.6.4-3_amd64.deb

三 高版本Linux问题处理

在上面sh configure命令检查机制跑通后,即无error信息后,就可以处理高版本Linux编译环境的问题。

代码
$cd cd jdk8u{jdk源代码根目录}
$gedit ./hotspot/make/linux/makefiles/gcc.make
查找一个字段WARNINGS_ARE_ERRORS = -Werror,找到后,把它注释掉。

四 编译
因为高版本的gcc不再支持stabs,make下要加点参数(DEBUG_BINARIES=true),同时在运行时,可能出现问题,最好把错误日志打印出来。

代码
$make all DEBUG_BINARIES=true 2>&1 |tee build.log
接下来就是20多分钟的等待,编译出来的build文件有3.3G大小,还是挺大的。

后记:
   想在Windows下尝试编译jdk源代码的程序员网友可以试试以下方法,全网只有这两个下面位分享了方法,而且第二位是参考第一位的,一定要安装vs201X,因为要用到它的C++编译器,过程真的非常复杂。



https://www.xamrdz.com/mobile/4zb1962268.html

相关文章: