编译hotspot8
编译hotspot8
ubuntu desktop 18 全新准备与编译过程再记录下:
# 建议使用此gcc和g++版本,过高版本比如gcc7或引发编译报错
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
# 安装相关依赖
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 libasound2-dev
#安装JDK8 并设置path 安装CDT
scp simon@172.16.106.122:/Users/simon/002.tools/jdk-8u211-linux-x64.tar.gz ./
gedit ~/.profile
export JAVA_HOME=/home/simon/002.tools/jdk1.8.0_211
export PATH="$PATH:$JAVA_HOME/bin"
source ~/.profile
java -version
scp simon@172.16.106.122:/Users/simon/002.tools/eclipse-cpp-2019-06-R-linux-gtk-x86_64.tar.gz ./
# 安装版本管理工具 取代码用 切换到相应tag
cd /home/simon/600.self/03.code/02.cpp/hotspot-jdk8-b120/
# 这是我本地目录,对应的你自己创建就好
sudo apt-get install mercurial
# 获取代码 如果因为网络等问题取不下来,fanqiang吧
hg clone http://hg.openjdk.java.net/jdk8/jdk8
# 取好后切换到jdk8-b120分支 需要在目录 /home/simon/600.self/03.code/02.cpp/hotspot-jdk8-b120/jdk8下
hg up jdk8-b120
# 查看一下
hg identify
# 输出这个就对了 cd3825b29830 jdk8-b120
cd jdk8
chmod +x get_source.sh
sh get_source.sh
# 编译3.82的make cmake代码到 ftp://ftp.gnu.org/gnu/make/make-3.82.tar.gz取 假设我放在/home/simon/002.tools/make-3.82
cd /home/simon/002.tools/make-3.82
# 修改下面这个文件 否则编译make报错
gedit glob/glob.c
# 将 211行 232行注释掉
#// #if !defined __alloca && !defined __GNU_LIBRARY__
#// #endif
# 准备编译make3.82
chmod +x configure
./configure
make
./make --version
# 将系统的默认make链接成3.82版本
cd /usr/bin/
sudo ln -s /home/simon/002.tools/make-3.82/make make-3.82
sudo rm make
sudo ln -s make-3.82 make
make --version
# 如果看到的是3.82就可以了
# 确认gcc和g++是4.8版本 如果是7.x版本 或会引发如下错误:
# error: invalid suffix on literal; C++11 requires a space between literal and string macro [-Werror=literal-suffix]
cd /usr/bin
sudo rm gcc
sudo ln -s gcc-4.8 gcc
# g++同样操作即可
cd /usr/bin
sudo rm g++
sudo ln -s g++-4.8 g++
# 修改hotspot/make/linux/makefiles/gcc.make 文件207 行 WARNINGS_ARE_ERRORS = -Werror 改成 WARNINGS_ARE_ERRORS = -Wno-all
# 编译hotspot
# 修改支持的os版本检查
cd /home/simon/600.self/03.code/02.cpp/hotspot-jdk8-b120/jdk8
gedit hotspot/make/linux/Makefile
# 修改SUPPORTED_OS_VERSION =... 加上4% 不然4.x的内核不支持
# 如果存在build目录则删除
rm -rf build/
chmod +x configure
./configure --with-debug-level=slowdebug
nohup make all &
tail -f nohup.out
解压调试符号包并调试:
# 编译到最后 Exception in thread "main" java.lang.VerifyError: class jdk.nashorn.internal.objects.ScriptFunctionImpl 这种报错就忽略好了 不影响hotspot编译
# 编译好了后 解压调试符号表,
cd /home/simon/600.self/03.code/02.cpp/hotspot-jdk8-b120/jdk8/build/linux-x86_64-normal-server-slowdebug/jdk/lib/amd64/server
unzip libjvm.diz
配合CDT使用,爽的飞起。
编译hotspot8的更多相关文章
- TODO:macOS编译PHP7.1
TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...
- Centos6.5下编译安装mysql 5.6
一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...
- CENTOS 6.5 平台离线编译安装 PHP5.6.6
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
- CENTOS 6.5 平台离线编译安装 Mysql5.6.22
一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...
- Hawk 6. 编译和扩展开发
Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...
- android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测
目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...
- 在Windows上编译和调试CoreCLR
生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...
- 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~
这篇博客,只是把自己在开发中经常遇到的打包编译问题以及解决方案给大家稍微分享一下,不求吸睛,但求有用. 1.大家都知道我们常常会遇到dex超出方法数的问题,所以很多人都会采用android.suppo ...
随机推荐
- 浅谈Python中的深浅拷贝的区别
深.浅拷贝总结 深拷贝 拷贝可变数据类型,如列表容器: a = [1, 2, [3, 4]] b = copy.deepcopy(a) a 与 b 所指的列表容器的空间地址不一致,即 id(a) != ...
- Python3的一些基本输入输出
# python3 # 基本输入输出 #学会使用split()的使用是关键,input()的返回值一定是字符类型 .-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. ...
- C语言学习笔记一---C语言概述
一.编程语言与解释语言 1.程序的执行 a.解释:借助一个能试图理解程序的程序,使计算机按要求执行你自己写的程序 b.编译:将所写程序翻译为机器语言写的程序,使计算机按要求执行你自己写的程序 2.两者 ...
- 老男孩武老师的Django笔记
武老师的 Django 博客笔记 基础篇 https://www.cnblogs.com/wupeiqi/articles/5237704.html 进阶篇 https://www.cnblogs.c ...
- 定义 WSGI 接口
# WSGI服务器调用 def application(environ,start_response): start_response('200 OK',[('Content-Type','text/ ...
- Python性能分析与优化PDF高清完整版免费下载|百度云盘
百度云盘|Python性能分析与优化PDF高清完整版免费下载 提取码:ubjt 内容简介 全面掌握Python代码性能分析和优化方法,消除性能瓶颈,迅速改善程序性能! 对于Python程序员来说,仅仅 ...
- Struts2中Get请求转码问题
Tomcat默认编码为ISO859-1 Post提交时,struts2会对其转码为iso8859-1,因此不需要另外转码,而 Get提交表单,则需要单独转码,转码过程如下图:
- windows:根据特征码查找内核任意函数
在windows平台做逆向.外挂等,经常需要调用很多未导出的内核函数,怎么方便.快速查找了?可以先用IDA等工具查看硬编码,再根据硬编码定位到需要调用的函数.整个思路大致如下: 1.先查找目标模块 ...
- maven中的陌生单词
有个单词记不住啊: artifact:人工制品,手工艺品,加工品; 石器; 词根:fac,fact,fect,fic,fig=make,do,表示“做,制作” 因此 art i fact 意思很好 ...
- 关键字Run Keyword If 如何写多个条件语句、如何在一个条件下执行多个关键字
Run Keyword If 关键字给出的示例是: 但是,这往往不能满足我们实际需要,比如,我们需要同时判断多个条件是否成立,或者在条件成立时我们想要执行多个关键字,虽然可以进行封装再调用,但是比较麻 ...