1 How to compile perf for Android 1 How to compile perf for Android 2 ========================================= 2 ========================================= 3 3 4 I. Set the Android NDK environment 4 I. Set the Android NDK environment 5 ---------------------------------------------- 5 ------------------------------------------------ 6 6 7 (a). Use the Android NDK 7 (a). Use the Android NDK 8 ---------------------------------------------- 8 ------------------------------------------------ 9 1. You need to download and install the Androi 9 1. You need to download and install the Android Native Development Kit (NDK). 10 Set the NDK variable to point to the path wher 10 Set the NDK variable to point to the path where you installed the NDK: 11 export NDK=/path/to/android-ndk 11 export NDK=/path/to/android-ndk 12 12 13 2. Set cross-compiling environment variables f 13 2. Set cross-compiling environment variables for NDK toolchain and sysroot. 14 For arm: 14 For arm: 15 export NDK_TOOLCHAIN=${NDK}/toolchains/arm-l 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- 16 export NDK_SYSROOT=${NDK}/platforms/android-24/arch-arm 17 For x86: 17 For x86: 18 export NDK_TOOLCHAIN=${NDK}/toolchains/x86-4 18 export NDK_TOOLCHAIN=${NDK}/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android- 19 export NDK_SYSROOT=${NDK}/platforms/android- 19 export NDK_SYSROOT=${NDK}/platforms/android-24/arch-x86 20 20 21 This method is only tested for Android NDK ver 21 This method is only tested for Android NDK versions Revision 11b and later. 22 perf uses some bionic enhancements that are no 22 perf uses some bionic enhancements that are not included in prior NDK versions. 23 You can use method (b) described below instead 23 You can use method (b) described below instead. 24 24 25 (b). Use the Android source tree 25 (b). Use the Android source tree 26 ---------------------------------------------- 26 ----------------------------------------------- 27 1. Download the master branch of the Android s 27 1. Download the master branch of the Android source tree. 28 Set the environment for the target you want us 28 Set the environment for the target you want using: 29 source build/envsetup.sh 29 source build/envsetup.sh 30 lunch 30 lunch 31 31 32 2. Build your own NDK sysroot to contain lates 32 2. Build your own NDK sysroot to contain latest bionic changes and set the 33 NDK sysroot environment variable. 33 NDK sysroot environment variable. 34 cd ${ANDROID_BUILD_TOP}/ndk 34 cd ${ANDROID_BUILD_TOP}/ndk 35 For arm: 35 For arm: 36 ./build/tools/build-ndk-sysroot.sh --abi=arm 36 ./build/tools/build-ndk-sysroot.sh --abi=arm 37 export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/ 37 export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-arm 38 For x86: 38 For x86: 39 ./build/tools/build-ndk-sysroot.sh --abi=x86 39 ./build/tools/build-ndk-sysroot.sh --abi=x86 40 export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/ 40 export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-x86 41 41 42 3. Set the NDK toolchain environment variable. 42 3. Set the NDK toolchain environment variable. 43 For arm: 43 For arm: 44 export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/ar 44 export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/arm-linux-androideabi- 45 For x86: 45 For x86: 46 export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/i6 46 export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/i686-linux-android- 47 47 48 II. Compile perf for Android 48 II. Compile perf for Android 49 ---------------------------------------------- 49 ------------------------------------------------ 50 You need to run make with the NDK toolchain an 50 You need to run make with the NDK toolchain and sysroot defined above: 51 For arm: 51 For arm: 52 make WERROR=0 ARCH=arm CROSS_COMPILE=${NDK_T 52 make WERROR=0 ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}" 53 For x86: 53 For x86: 54 make WERROR=0 ARCH=x86 CROSS_COMPILE=${NDK_T 54 make WERROR=0 ARCH=x86 CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}" 55 55 56 III. Install perf 56 III. Install perf 57 ---------------------------------------------- 57 ----------------------------------------------- 58 You need to connect to your Android device/emu 58 You need to connect to your Android device/emulator using adb. 59 Install perf using: 59 Install perf using: 60 adb push perf /data/perf 60 adb push perf /data/perf 61 61 62 If you also want to use perf-archive you need 62 If you also want to use perf-archive you need busybox tools for Android. 63 For installing perf-archive, you first need to 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' 64 sed 's/#!\/bin\/bash/#!\/system\/bin\/sh/g' perf-archive >> /tmp/perf-archive 65 chmod +x /tmp/perf-archive 65 chmod +x /tmp/perf-archive 66 adb push /tmp/perf-archive /data/perf-archiv 66 adb push /tmp/perf-archive /data/perf-archive 67 67 68 IV. Environment settings for running perf 68 IV. Environment settings for running perf 69 ---------------------------------------------- 69 ------------------------------------------------ 70 Some perf features need environment variables 70 Some perf features need environment variables to run properly. 71 You need to set these before running perf on t 71 You need to set these before running perf on the target: 72 adb shell 72 adb shell 73 # PERF_PAGER=cat 73 # PERF_PAGER=cat 74 74 75 IV. Run perf 75 IV. Run perf 76 ---------------------------------------------- 76 ------------------------------------------------ 77 Run perf on your device/emulator to which you 77 Run perf on your device/emulator to which you previously connected using adb: 78 # ./data/perf 78 # ./data/perf
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.