在64位Windows上編譯hsdis
背景
最近想學習下Hotspot的JIT,查詢大量資料都說需要hsdis,但是又從哪都找不到windows64位的版本。
如果沒有這個東西,直接執行程式碼,加上如下引數後
-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly
會得到如下提示
Java HotSpot(TM) 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
Could not load hsdis-amd64.dll; library not loadable; PrintAssembly is disabled
。。。。。。
看來確實是需要hsdis-amd64.dll[下載]這個東西的。
動手
How to build hsdis-amd64.dll and hsdis-i386.dll on Windows
- Install Cygwin. At the Select Packages screen, add the following packages (by expanding the Devel category, then clicking once on the Skip label next to each package name):
make
mingw64-x86_64-gcc-core
(only needed for hsdis-amd64.dll)mingw64-i686-gcc-core
(only needed for hsdis-i386.dll)- Run the Cygwin Terminal. This can be done using the Desktop or Start Menu icon created by the installer, and will create your Cygwin home directory (
C:\cygwin\home\username
orC:\cygwin64\home\username
, by default).- Download the latest GNU binutils source package and extract its contents to your Cygwin home directory. At the time of writing, the latest package is
binutils-2.24.tar.bz2
. This should result in a directory named binutils-2.24 (or whatever the latest version is) in your Cygwin home directory.- Download the OpenJDK source by going to the JDK 8 Updates repository, selecting the tag corresponding to your installed JRE version, and clicking bz2. Extract the hsdis directory (found in src\share\tools) to your Cygwin home directory.
- In the Cygwin Terminal, enter
cd hsdis
.- To build hsdis-amd64.dll, enter
make OS=Linux MINGW=x86_64-w64-mingw32 'AR=$(MINGW)-ar' BINUTILS=~/binutils-2.24
. To build hsdis-i386.dll, entermake OS=Linux MINGW=i686-w64-mingw32 'AR=$(MINGW)-ar' BINUTILS=~/binutils-2.24
. In either case, replace2.24
with the binutils version you downloaded.The DLL can now be installed by copying it from hsdis\build\Linux-amd64 or hsdis\build\Linux-i586 to your JRE’s bin\server or bin\client directory.
Note that binutils and OpenJDK use incompatible licenses. As I understand it, this means that it is legal to combine them for personal use, but not to distribute the result. Because of this, I cannot provide prebuilt DLLs.
Bonus tip: if you prefer Intel ASM syntax to AT&T, specify
-XX:PrintAssemblyOptions=intel
alongside any other PrintAssembly options you use.
大體上按照這個做完之後,最後執行make命令總是報錯。
踩了不少坑,最後還是build出來了。
現在在上面引用內容的基礎上進行完善,希望能幫助更多人
請參照下面的步驟
粗體的部分是在上文基礎上更新的內容
- 安裝Cygwin
Select Packages
頁面需要注意,在預設的基礎上,需要額外安裝的package有:
- Devel - make
- Devel - gcc-core
- Devel - mingw64-x86_64-gcc-core
- Devel - texinfo
- Utils - diffutils
- 安裝完之後啟動Cygwin,則會在Cygwin的安裝目錄下的
home
下自動生成你的使用者名稱命名的資料夾(下文記之為~
) - 將下載的binutils解壓到
~
下
.../home/使用者名稱/binutils-2.27/
- 將下載的openJDK原始碼/src/share/tools/hsdis解壓到
~
下
.../home/使用者名稱/hsdis/
- 修改
~/hsdis/Makefile
檔案,搜尋LIBRARIES
,將
LIBRARIES = $(TARGET_DIR)/bfd/libbfd.a \
$(TARGET_DIR)/opcodes/libopcodes.a \
$(TARGET_DIR)/libiberty/libiberty.a
修改為
LIBRARIES = $(TARGET_DIR)/bfd/libbfd.a \
$(TARGET_DIR)/zlib/libz.a \
$(TARGET_DIR)/opcodes/libopcodes.a \
$(TARGET_DIR)/libiberty/libiberty.a
儲存 - 在Cygwin視窗輸入
cd ~/hsdis
,然後輸入命令make OS=Linux MINGW=x86_64-w64-mingw32 'AR=$(MINGW)-ar' BINUTILS=~/binutils-2.27
(最後的binutils路徑需要與實際安裝路徑一致) - 等待幾分鐘,如果最後沒有報錯,那麼就build成功了,我們需要的
hsdis-amd64.dll
現在就在~/hsdis/build/Linux-amd64
裡面了,把它copy到$JAVA_HOME/jre/bin/server
(或$JAVA_HOME/jre/bin/client
)下就OK了。
相關推薦
在64位Windows上編譯hsdis
背景 最近想學習下Hotspot的JIT,查詢大量資料都說需要hsdis,但是又從哪都找不到windows64位的版本。 如果沒有這個東西,直接執行程式碼,加上如下引數後 -XX:+UnlockDiagnosticVMOptions -XX:+PrintA
在64位機器上VS2012編譯的32位程式在XP系統上執行提示Wow64EnableWow64FsRedirection無法定位於輸入點
Wow64EnableWow64FsRedirection()函式是64位計算機用於定義轉向的函式,在32位計算機中不存在轉向問題 因此,在32位計算機中的kernel32.dll庫中就不存在此函式,當程式執行在32位計算機中時,就會提示無法定位 解決方法: 採用函式指標的
如何在64位windows作業系統上使用PLSQL Developer
1.由於 PLSQL Developer 沒有64位版本,所以在64位系統上執行時會出現如下圖介面(沒有connect as選項): 2.到Oracle官網上下載一個32位的客戶端(instantclient),一定要下載 basic 版本的。最好去官網下載吧,網上的有
在CENT OS 7.0 64位系統上原始碼編譯安裝OPENCV3.0以及CUDA7.0,支援CUDA開發,並整合QT5.5.0的開發環境
=============================概述================================= 在CENT OS 7.0 64位系統上原始碼編譯安裝OPENCV,支援CUDA,並整合QT的開發環境,整體過程如下: 1,安裝作業系統,我使用U
mySQL ODBC 在windows 64位版上的驅動問題
1,問題的起源 某次編輯一個asp檔案,其中訪問mysql資料庫的連線字串如下: "driver={mysql odbc 3.51 driver};server=localhost;uid=root;pwd=sa;database=server;Stmt=Set Names 'GBK'" 在執行時。
ubuntu16.04.01 64位 mingw-w64 編譯 VLC-2.2.4版本 firefox外掛、IE activex外掛、windows安裝包。
0:編譯工具準備 1:編譯環境準備 安裝mingw-w64編譯器: sudo apt-get install gcc-mingw-w64-i686 g++-mingw-w64-i686
Windows 7 64位系統上搭建Hadoop偽分散式環境(很詳細)
在開始配置前,我們先了解Hadoop的三種執行模式。 Hadoop的三種執行模式 獨立(或本地)模式:無需執行任何守護程序,所有程式都在同一個JVM上執行。在獨立模式下測試和除錯MapReduce程式很方便,因此該模式在開發階段比較適合。 **偽分散式
64位系統上設定編譯平臺為x86的VS2008專案升級到VS2010後編譯失敗的原因和解決辦法
今天遇到這個情況很是費勁,結果發現目標機器上64位系統 然後 看看這個解釋吧,我就不轉載了,哈哈 無法就是anycpy和x86的關閉,煩死了 建議試用win server 2008 只是可能不能註冊,不過也不管了
關於在64位系統上,使用APlayer,運行報錯“找不到指定的模塊”
64位系統 詳細信息 visible 對話框 ole event onu get *** 使用APlayer開發了一個C#程序,原先開發電腦是32位的,安裝電腦也是32位,只需要將相應的文件打包,然後在system32文件夾中放入atl71.dll和D3DX9_43.dll
zlib包在64位機被編譯成32位目標代碼的問題
x86_64 -c efi yun mod 文件 配置 chmod pre 一、進入zlib目錄 [[email protected]/* */ \]$ cd /home/yun/zlib-1.2.8 [[email prot
在Win7 64位電腦上安裝Sql Server 2008 R2 Express
技術分享 下載網址 com 操作系統 參考 默認 title 安裝 英文 安裝環境說明: 操作系統:Win7 64位 英文版 安裝步驟: 1、準備安裝文件 下載網址:https://www.microsoft.com/zh-CN/download/detai
關於64位 windows&linux雙系統引導問題
start trac track uid too 處理 blog windows for 換了臺本子win7 64位,抽空做個雙系統,裝了下linux。 遇到開機問題:進linux可以正常使用,進win7花屏死機,初步估計是grub(此時的boot sector位grub)
64位Windows的Dos中取消了edit命令
dos命令 行編輯器 外部命令 正常 span 外部 mage 前段時間 時間 前段時間在玩dos命令行的時候,用copy con創建了txt文件後想對其進行編輯,然後我又不想用記事本,所以去網上找命令行中對文本文件進行編輯的命令(純屬想裝B),結果看到了edit命令。 一
如何在64位windows7上同時使用32位和64位的Eclipse
blog post 以及 卸載 jdk 實現 eclipse 刪除 oracl 64位機器上可以同時運行32位和64位的Eclipse,但是電腦中必須有相應的jdk。Eclipse雖然不需要安裝,但是在啟動時會檢查系統中固定文件夾下是否有合適的jre。例如32位Ec
[golang] Glide 包管理工具,在windows10 64位系統上的bug修復方案
環境 all 管理工具 oos for 討論 pos inb direct bug重現 [ERROR] Unable to export dependencies to vendor directory: Error moving files: exit status 1
在windows 上編譯部署Rap2
get 前後端 CI 這也 新版 修改 blank com 填充 在windows 上編譯部署Rap2 引言 安裝需要的環境 安裝後端站點 創建數據庫 在全局安裝pm2 和 typescript 配置mysql,redi
在64位系統上部署BDE的要點
首先,據我所知,Borland/CodeGear沒有釋出過支援64bit windows的BDE安裝包,如果你在網上看到了相關的BDE安裝包,很有可能是使用者自己重新打包釋出的。無論是在32bit windows還是64bit windows下,釋出BDE關鍵是以下幾點1:將BD
32位的apk 在64位平臺上執行不停掛掉的問題
01-01 00:55:41.800 E/AndroidRuntime(12543): FATAL EXCEPTION: main 01-01 00:55:41.800 E/AndroidRuntime(12543): Process: cn.digirun.update, PID: 12543
libcurl在centos6.4 64位作業系統上不支援https的解決方案
問題: 在程式內使用libcurl庫訪問https的網址時,始終返回 CURLE_UNSUPPORTED_PROTOCOL 經查詢發現是libcurl庫檔案編譯時沒有選擇支援ssl,預設的li
在windows上編譯chrome瀏覽器Building Chromium for Windows
web端用webRTC實現的一對一視訊,互動直播和會議。https://github.com/starrtc/android-demo Chromium requires Visual Studio 2017 (1