歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> perf 交叉編譯,arm

perf 交叉編譯,arm

日期:2017/3/3 12:41:55   编辑:Linux技術

perf:從2.6.31內核開始,linux內核自帶了一個性能分析工具perf,能夠進行函數級與指令級的熱點查找。

Perf是內置於Linux內核源碼樹中的性能剖析(profiling)工具。

它基於事件采樣原理,以性能事件為基礎,支持針對處理器相關性能指標與操作系統相關性能指標的性能剖析。

常用於性能瓶頸的查找與熱點代碼的定位。

本文主要涉及交叉編譯。

前言:perf 工具需要zlib、binutils、elfutils庫支持。

我主機上的arm-hisiv200-linux-的交叉工具鏈已經支持zlib、binutils庫,所以只需要做elfutils的交叉編譯即可。

附上主機上交叉編譯器的詳細細節:

交叉編譯elfutils

使用elfutils-0.148.tar.bz2(目前最新) 下載地址:https://fedorahosted.org/releases/e/l/elfutils/

tar -xvjf elfutils-0.148.tar.bz2

# cd elfutils-0.148
./configure --host=arm-hisiv200-linux --prefix=/xxx/elfutils_tool/elfutils_target --exec-prefix=/xxx/elfutils_tool/elfutils_target
注意:--host=arm-hisiv200-linux 沒有-修改elfutils-0.148 目錄下Makefile 根目錄下makefile ,修改過程-》

# Add doc back when we have some real content.
SUBDIRS = config m4 lib libelf libebl libdwfl libdw libcpu libasm backends \
	  src po tests
將libcpu去掉。改為
# Add doc back when we have some real content.
SUBDIRS = config m4 lib libelf libebl libdwfl libdw libasm backends \
	  src po tests

修改elfutils-0.148/backends/下makefile

如左圖中修改,右圖中作為對照 ,主要是去掉i386 和x86_64 相關內容,不然各種錯誤。

返回elfutils-0.148

目錄,make make install即可完成交叉編譯

編譯perf 這個比較簡單

進入linux-3.4.y/tools/perf目錄

修改Makefile ,如果編譯器編譯太嚴格的的話,把warning,判定為error ,可以把 CFLAGS中$(CFLAGS_WERROR)刪除。

CFLAGS = -fno-omit-frame-pointer -ggdb3 -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
EXTLIBS = -lpthread -lrt -lelf -lm -lebl -ldl -L/xxx/elfutils_tool/elfutils_target/lib 
ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/xxx/elfutils_tool/elfutils_target/include
ALL_LDFLAGS = $(LDFLAGS)
直接make就ok了

make LDFLAGS=-static ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- DEBUG=1 LIBDW_DIR=/xxx/elfutils_tool/elfutils_target HAVE_CPLUS_DEMANGLE=1
其實在這裡我的系統使用的是CentOS release 5.4 (Final) 系統自帶的/usr/bin/flex 為2.5.4 版本太低,在執行makefile的

$(OUTPUT)util/pmu-flex.c: util/pmu.l $(OUTPUT)util/pmu-bison.c
	$(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/pmu-flex.h -t util/pmu.l > $(OUTPUT)util/pmu-flex.c
時候,提示flex語法錯誤,不能正常解析--header-file 語法,下載flex-2.5.35後,直接./configure make 後生成pc上使用的flex工具,替換掉Pc端的usr/bin/flex,即可。。。。。

生成的perf工具。

Copyright © Linux教程網 All Rights Reserved