79 lines · plain
1How to compile perf for Android2=========================================3 4I. Set the Android NDK environment5------------------------------------------------6 7(a). Use the Android NDK8------------------------------------------------91. You need to download and install the Android Native Development Kit (NDK).10Set the NDK variable to point to the path where you installed the NDK:11 export NDK=/path/to/android-ndk12 132. Set cross-compiling environment variables for NDK toolchain and sysroot.14For arm:15 export NDK_TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-16 export NDK_SYSROOT=${NDK}/platforms/android-24/arch-arm17For x86:18 export NDK_TOOLCHAIN=${NDK}/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-19 export NDK_SYSROOT=${NDK}/platforms/android-24/arch-x8620 21This method is only tested for Android NDK versions Revision 11b and later.22perf uses some bionic enhancements that are not included in prior NDK versions.23You can use method (b) described below instead.24 25(b). Use the Android source tree26-----------------------------------------------271. Download the master branch of the Android source tree.28Set the environment for the target you want using:29 source build/envsetup.sh30 lunch31 322. Build your own NDK sysroot to contain latest bionic changes and set the33NDK sysroot environment variable.34 cd ${ANDROID_BUILD_TOP}/ndk35For arm:36 ./build/tools/build-ndk-sysroot.sh --abi=arm37 export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-arm38For x86:39 ./build/tools/build-ndk-sysroot.sh --abi=x8640 export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-x8641 423. Set the NDK toolchain environment variable.43For arm:44 export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/arm-linux-androideabi-45For x86:46 export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/i686-linux-android-47 48II. Compile perf for Android49------------------------------------------------50You need to run make with the NDK toolchain and sysroot defined above:51For arm:52 make WERROR=0 ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}"53For x86:54 make WERROR=0 ARCH=x86 CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}"55 56III. Install perf57-----------------------------------------------58You need to connect to your Android device/emulator using adb.59Install perf using:60 adb push perf /data/perf61 62If you also want to use perf-archive you need busybox tools for Android.63For installing perf-archive, you first need to replace #!/bin/bash with #!/system/bin/sh:64 sed 's/#!\/bin\/bash/#!\/system\/bin\/sh/g' perf-archive >> /tmp/perf-archive65 chmod +x /tmp/perf-archive66 adb push /tmp/perf-archive /data/perf-archive67 68IV. Environment settings for running perf69------------------------------------------------70Some perf features need environment variables to run properly.71You need to set these before running perf on the target:72 adb shell73 # PERF_PAGER=cat74 75IV. Run perf76------------------------------------------------77Run perf on your device/emulator to which you previously connected using adb:78 # ./data/perf79