1 How to compile perf for Android
2 =========================================
4 I. Set the Android NDK environment
5 ------------------------------------------------
7 (a). Use the Android NDK
8 ------------------------------------------------
9 1. You need to download and install the Android Native Development Kit (NDK).
10 Set the NDK variable to point to the path where you installed the NDK:
11 export NDK=/path/to/android-ndk
13 2. Set cross-compiling environment variables for NDK toolchain and sysroot.
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-arm
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-x86
21 This method is only tested for Android NDK versions Revision 11b and later.
22 perf uses some bionic enhancements that are not included in prior NDK versions.
23 You can use method (b) described below instead.
25 (b). Use the Android source tree
26 -----------------------------------------------
27 1. Download the master branch of the Android source tree.
28 Set the environment for the target you want using:
29 source build/envsetup.sh
32 2. Build your own NDK sysroot to contain latest bionic changes and set the
33 NDK sysroot environment variable.
34 cd ${ANDROID_BUILD_TOP}/ndk
36 ./build/tools/build-ndk-sysroot.sh --abi=arm
37 export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-arm
39 ./build/tools/build-ndk-sysroot.sh --abi=x86
40 export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-x86
42 3. Set the NDK toolchain environment variable.
44 export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/arm-linux-androideabi-
46 export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/i686-linux-android-
48 II. Compile perf for Android
49 ------------------------------------------------
50 You need to run make with the NDK toolchain and sysroot defined above:
52 make WERROR=0 ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}"
54 make WERROR=0 ARCH=x86 CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}"
57 -----------------------------------------------
58 You need to connect to your Android device/emulator using adb.
60 adb push perf /data/perf
62 If you also want to use perf-archive you need busybox tools for Android.
63 For 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-archive
65 chmod +x /tmp/perf-archive
66 adb push /tmp/perf-archive /data/perf-archive
68 IV. Environment settings for running perf
69 ------------------------------------------------
70 Some perf features need environment variables to run properly.
71 You need to set these before running perf on the target:
76 ------------------------------------------------
77 Run perf on your device/emulator to which you previously connected using adb: