工作需要,對gem5有點興趣,准備自己研究一下,gem5新手剛開始入門學習,主要參考了網上其他前人的文章和官方說明。
目前網上的前人文章有部分有點太早了,稍顯過時,我結合自己的經歷來整理一下流程。
gem5 介紹我就不多說了,官方網站如下:
https://www.gem5.org/
我用的環境是深度的deepin,屬於可以用apt命令來安裝的那一類,比如烏班圖。
一上來需要安裝gem5需要的各種包和依賴。
sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python-dev python
上面這個命令是官網上的,里面有python pyhton-dev 這兩個是python2的,但現在的gem5不支持python2了,必須要3。所以還需要安裝python3。
sudo apt install python3 python3-dev
盡量聯網后用apt或者yum命令搞定上面這些東西,不然自己去找還是挺麻煩。我試了下deepin 都可以搞定,其他大概率會用ubuntu之類的更沒問題,我開始用deepin還安不上,結果是沒有更新庫,先用sudo apt update,之后就可以了。
版本問題目前沒有那么惱火了,我直接更新下來都可以用,不用特別在意某個軟件的版本問題。
接下來就是下載gem5了,官方推薦用git來下,但國內應該不行,還是用這個地址下載吧:
https://github.com/gem5/gem5
點code 下面就有下載的按鈕。
上面這個還是國外的,國內的也有鏡像。會用git的就用git。。不會用的就直接點下載吧,不過他要注冊后才能下載。
https://gitee.com/mirrors/gem5
接下來就是把這個包解壓,解壓后進去,進去之后就可以編譯了,可以來編一下X86。
sudo python3 `which scons` build/X86/gem5.opt -j8
自己的環境的話最好加個sudo,不然可能會有問題,后面的-j8是8個核跑的意思大概是吧我覺得。如果報錯就不要這個參數也行,反正我看了下編的時候我的每個cpu都是100%,說明是都用上了的。如果不想加sudo就把這里面的目錄全部改成自己的權限和擁有者。
which scons其實就是scons命令,把它路徑加上,build是編的結果放在build文件夾里面,我試了下其他的名字好像不行,不知為啥。gem5.opt就是結果,最后編成功的話會生成gem5.opt文件。我的電腦有點慢,編了快一個小時才搞定。
我看了下中間過程,有些warning,然后就開始來消除警告,一般來說只要成功了,警告可以不管,但我還是想把能去的去掉。
我這里出現了三個warning,一個是 valgrind啥之類的記不清了,二個是找不到png.h,三個是找不到hdf5 c++庫。下面一個一個搞定,我花了很久時間去查這些東西,有時去下載了手動安裝,有時可以直接apt,搞定之后又試了下盡量全部apt,這樣簡單點,結果如下:
valgrind這個好像是GDB里面的組件還是功能哦,直接安裝GDB就可以搞定:
sudo apt install gdb
png.h這個我試了幾次結果可用的apt如下:
sudo apt install libpng-dev
hdf5這個也是找了很久,還安了hdf5這個包都不行,結果是另一個相關的lib就行,現在一個命令搞定:
sudo apt install libhdf5-dev
這三個安好了之后再編就不會出現找不到庫的警告,成功編譯后就可以測試一個hello world的例子
sudo ./build/X86/gem5.opt ./configs/example/se.py -c ./tests/test-progs/hello/bin/x86/linux/hello
運行后成功結果如下:
Global frequency set at 1000000000000 ticks per second warn: No dot file generated. Please install pydot to generate the dot file and pdf. build/X86/mem/mem_interface.cc:793: warn: DRAM device capacity (8192 Mbytes) does not match the address range assigned (512 Mbytes) 0: system.remote_gdb: listening for remote gdb on port 7000
**** REAL SIMULATION **** build/X86/sim/simulate.cc:107: info: Entering event queue @ 0. Starting simulation... Hello world! Exiting @ tick 5985500 because exiting with last active thread context
成功輸出hello world。到此基本環境測試跑通。
另外如編的過程中出錯要重新編,可以把build這個文件夾刪掉就行。
目前我搞到這一步,最后發一個官方的學習指導鏈接,可以看看,那里有些東西要細一點,可以結合着看。
https://www.gem5.org/documentation/learning_gem5/part1/building/