因為工作需要,需要再Mips平台下進行效能調校,同時需要可以轉CTF的功能。
紀錄一下需要哪些套件進行交叉編譯。
Perf目前預設為linux kernl的tool,因此可以從linux kernel內找到。
或著從以下來源找到相對應Perf
https://kernel.googlesource.com/pub/scm/linux/kernel/git/jolsa/perf/
因此我直接載有支持CTF的Perf tool
https://kernel.googlesource.com/pub/scm/linux/kernel/git/jolsa/perf/+/perf/core_ctf_convert
除此之外還需另外安裝babeltrace套件用於轉換CTF格式(交叉編譯均下載源碼)。
(1) Babeltrace (http://diamon.org/babeltrace/)
./configure --host=mipsel-linux-gnu --target=mipsel-linux-gnu --prefix=$PWD/release CC="mipsel-linux-gnu-gcc -EL" --disable-man-pages CFLAGS="-I$HOME/mips-package/elfutils-0.171/release/include -I$HOME/mips-package/popt-1.16/release/include" LDFLAGS="-L$HOME/mips-package/elfutils-0.171/release/lib -L$HOME/mips-package/popt-1.16/release/lib -Wl,-rpath=$HOME/mips-package/elfutils-0.171/release/lib" PKG_CONFIG_PATH=$HOME/mips-package/pkg-config
Dependency: elfutils, popt, glib (在此之前都需要安裝, 交叉編譯均差不多)
Glib可參考此文章
https://blog.csdn.net/absurd/article/details/646993
該作者有介紹交叉編譯遇到的問題與解決。
(2) tools/perf
Babeltrace準備好(同時也有utilelf, glib等mips版本),就可以直接編譯mips版本Perf
make ARCH=mips CROSS_COMPILE=mipsel-linux-gnu- LIBBABELTRACE=1 LIBBABELTRACE_DIR=$HOME/mips-package/babeltrace-stable-2.0/release/ EXTRA_CFLAGS="-EL -I$HOME/mips-package/elfutils-0.171/release/include -I$HOME/mips-package/glib-2.56.1/release/include" LDFLAGS="-L$HOME/mips-package/elfutils-0.171/release/lib -L$HOME/mips-package/glib-2.56.1/release/lib -Wl,-rpath=$HOME/mips-package/glib-2.56.1/release/lib"
可能會遇到
libperf.a(libperf-in.o): In function `event_class_add_field':
/home/oscar/mips/tools/perf/util/data-convert-bt.c:665: undefined reference to `bt_ctf_validate_identifier'
/home/oscar/mips/tools/perf/util/data-convert-bt.c:665: undefined reference to `bt_ctf_validate_identifier'
這樣就可以編出mips版本perf tool。
參考來源:
(1) https://stackoverflow.com/questions/43576997/building-perf-with-babeltrace-for-perf-to-ctf-conversion
沒有留言:
張貼留言