編譯,調試JVM過程中的各種問題(血淚史)


希望能幫到有需要的人,不要像我一樣花費了許多時日

 

問題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 各自分段下載,解決了網絡中斷問題。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM