希望能幫到有需要的人,不要像我一樣花費了許多時日
問題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 各自分段下載,解決了網絡中斷問題。