编译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的更多相关文章

  1. TODO:macOS编译PHP7.1

    TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...

  2. Centos6.5下编译安装mysql 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  3. CENTOS 6.5 平台离线编译安装 PHP5.6.6

    一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...

  4. CENTOS 6.5 平台离线编译安装 Mysql5.6.22

    一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...

  5. Android注解使用之注解编译android-apt如何切换到annotationProcessor

    前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...

  6. Hawk 6. 编译和扩展开发

    Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...

  7. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...

  8. 在Windows上编译和调试CoreCLR

    生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...

  9. 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~

    这篇博客,只是把自己在开发中经常遇到的打包编译问题以及解决方案给大家稍微分享一下,不求吸睛,但求有用. 1.大家都知道我们常常会遇到dex超出方法数的问题,所以很多人都会采用android.suppo ...

随机推荐

  1. Blazor带我重玩前端(四)

    布局 Blazor中的布局和MVC中的布局是类似的. 创建布局 新建一个Razor页面,所有新增的布局都要继承LayoutComponentBase,同时标识自定义内容的输出位置,即标识Body的位置 ...

  2. 任务调度中心xxl-job对外接口使用

    xxl-job主要分为调度中心和执行器提供了图像化界面,操作简单上手快,基本实现定时任务自动执行,同时可以针对任务日志进行查看.具体xxl-job可以再github上下载:https://github ...

  3. Java基础加强笔记——测试、反射、注解

    目录 1. Junit单元测试 2. 反射 3. 注解 Junit单元测试: 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要写代码的.关注程序具 ...

  4. 两个问题解答、opencv、tensorflow、numpy、matplotlib的基本使用

    开始图像处理的海洋 (1)两个问题的详细解答 在开始畅游opencv.tensorflow的海洋之前,我们这里先要解决两个问题. 1.Jupyter notebook 解决了无法自动跳转到浏览器的问题 ...

  5. selenium 破解登录滑块验证码mu

    from selenium import webdriverfrom PIL import Imagefrom selenium.webdriver import ChromeOptionsfrom ...

  6. R语言基本绘图-plot参数:标题,坐标轴和颜色

    标题 plot(c(1:2,2:4),main = "这是主标题",sub = "这是副标题",xlab = "这是x轴", ylab = ...

  7. springmvc的原理与流程

    springMVC中的几个组件: 前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU. 处理器映射器(HandlerMapping):根据URL去查找处理器 处理 ...

  8. 机器学习笔记簿 降维篇 LDA 01

    机器学习中包含了两种相对应的学习类型:无监督学习和监督学习.无监督学习指的是让机器只从数据出发,挖掘数据本身的特性,对数据进行处理,PCA就属于无监督学习,因为它只根据数据自身来构造投影矩阵.而监督学 ...

  9. 统计一个16位二进制数中1的个数,并将结果以十六进制形式显示在屏幕上,用COM格式实现。

    问题 统计一个16位二进制数中1的个数,并将结果以十六进制形式显示在屏幕上,用COM格式实现. 代码 code segment assume cs:code org 100h main proc ne ...

  10. 5分钟白嫖我常用的免费效率软件/工具!效率300% up!

    Mac 免费效率软件/工具推荐 1. uTools(Windows/Mac) 还在为了翻译 English 而专门下载一个翻译软件吗? 还在为了格式某个 json 文本.时间戳转换而打开网址百度地址吗 ...