Home | History | Annotate | Download | only in Documentation
      1 How to compile perf for Android
      2 =========================================
      3 
      4 I. Set the Android NDK environment
      5 ------------------------------------------------
      6 
      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
     12 
     13 2. Set cross-compiling environment variables for NDK toolchain and sysroot.
     14 For arm:
     15   export NDK_TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-
     16   export NDK_SYSROOT=${NDK}/platforms/android-9/arch-arm
     17 For x86:
     18   export NDK_TOOLCHAIN=${NDK}/toolchains/x86-4.6/prebuilt/linux-x86/bin/i686-linux-android-
     19   export NDK_SYSROOT=${NDK}/platforms/android-9/arch-x86
     20 
     21 This method is not working for Android NDK versions up to Revision 8b.
     22 perf uses some bionic enhancements that are not included in these NDK versions.
     23 You can use method (b) described below instead.
     24 
     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
     30   lunch
     31 
     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
     35 For arm:
     36   ./build/tools/build-ndk-sysroot.sh --abi=arm
     37   export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-arm
     38 For x86:
     39   ./build/tools/build-ndk-sysroot.sh --abi=x86
     40   export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-x86
     41 
     42 3. Set the NDK toolchain environment variable.
     43 For arm:
     44   export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/arm-linux-androideabi-
     45 For x86:
     46   export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/i686-linux-android-
     47 
     48 II. Compile perf for Android
     49 ------------------------------------------------
     50 You need to run make with the NDK toolchain and sysroot defined above:
     51 For arm:
     52   make ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} CFLAGS="--sysroot=${NDK_SYSROOT}"
     53 For x86:
     54   make ARCH=x86 CROSS_COMPILE=${NDK_TOOLCHAIN} CFLAGS="--sysroot=${NDK_SYSROOT}"
     55 
     56 III. Install perf
     57 -----------------------------------------------
     58 You need to connect to your Android device/emulator using adb.
     59 Install perf using:
     60   adb push perf /data/perf
     61 
     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
     67 
     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:
     72   adb shell
     73   # PERF_PAGER=cat
     74 
     75 IV. Run perf
     76 ------------------------------------------------
     77 Run perf on your device/emulator to which you previously connected using adb:
     78   # ./data/perf
     79