前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编译,调试JVM过程中的各种问题(血泪史)

编译,调试JVM过程中的各种问题(血泪史)

作者头像
执生
发布2020-09-27 10:46:39
9130
发布2020-09-27 10:46:39
举报
文章被收录于专栏:立权的博客

希望能帮到有需要的人,不要像我一样花费了许多时日

问题1:

com.jetbrains.cidr.execution.debugger.backend.gdb.GDBDriver$GDBCommandException: Error creating process /cygdrive/f/jdk8u/jdk8u/build/linuxR/jdk/bin/java, (error 193).

我在centos 7.6 上用 gcc4 编译出了jvm的代码,但是把代码拷贝到win10,用Clion调试,报上面错误。

根本原因没有找到,应该是linux编译出来的产物在win环境下无法兼容。

于是转ubuntu,在ubuntu上编译,ubuntu试了最新版本18.x 和 比较老版本12.x 和 适中版本16.x

结果:

  18.x的问题:

   在18.x上,前期准备都正常,但是到 make images 编译的时候,会报 All warnings are treated as errors。网上查是要把 Makefile 的 Werror 选项删除。

   但是在我的项目Makefile中没有找到这个选项,怀疑是gcc的版本太新。想降级 gcc 又找不到合适的 apt 源 , 于是用了旧的 ubuntu 12.x版本。

  12.x的问题:

   在12.x上,版本太久,以至于在用 apt 下载依赖的时候报 : dpkg 无法识别 tar.xz 文件。(contains ununderstood data member xxx.tar.xz),转用中间版本16.x

  最终在16.x上完成

问题2:

  apt 安装依赖问题。我是个ubuntu小白,不知道 apt 用法,一步一步的摸索,解决了不少问题。

  1.无法定位依赖包 ( unable to locate package )

    可能是没有合适的 apt 源, apt 源是提供文件下载的。可以用 sudo gedit /etc/apt/sources.list 增加国内源(阿里云的比较好用)

    如果是安装libX11库,可以试一下把X改成小写x 。这真的是......

  2.出现类似

    xxx :

      aaa(xxx依赖的包)

      bbb(xxx依赖的包)

  这种情况,我的情况是因为下载某个包(xxx)要依赖的包(aaa, bbb)太新了,无法下载 这个包(xxx),所以把 aaa 和 bbb 都卸载掉,然后再安装xxx,这是我的办法,因为我的虚拟机上没装什么,只供参考,千万不要不顾自己的情况随便照着我的来。  

问题3:

  Debug 时,Clion的左下方的调用堆栈都是 <Unknown>,去看一下Debugger的GDB,会发现有 No Source File Named XXX 的错误。

  这时候要找到 libjvm.diz ,(可在项目中搜索)然后解压到各自的当前目录,这个压缩包里有debug的信息。

问题4:

  下载源码问题。注意,要用 Mercurial 的 hg 命令下载代码才可以用 get_source.sh , 因为需要通过他下载一些依赖。(或者你本身就有这些依赖)

  Mercurial 下载过程总是网络中断,可以采用分段下载, 就是 hg -r 1 clone xxx,之后 hg update -r 版本号 , 最后 hg update

  get_source.sh其实也是多个 hg 指令, 所以我分开来 手动输入 hg 各自分段下载,解决了网络中断问题。

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

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

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

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

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