How to compile perf for Android ========================================= I. Set the Android NDK environment ------------------------------------------------ (a). Use the Android NDK ------------------------------------------------ 1. You need to download and install the Android Native Development Kit (NDK). Set the NDK variable to point to the path where you installed the NDK: export NDK=/path/to/android-ndk 2. Set cross-compiling environment variables for NDK toolchain and sysroot. For arm: export NDK_TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- export NDK_SYSROOT=${NDK}/platforms/android-24/arch-arm For x86: export NDK_TOOLCHAIN=${NDK}/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android- export NDK_SYSROOT=${NDK}/platforms/android-24/arch-x86 This method is only tested for Android NDK versions Revision 11b and later. perf uses some bionic enhancements that are not included in prior NDK versions. You can use method (b) described below instead. (b). Use the Android source tree ----------------------------------------------- 1. Download the master branch of the Android source tree. Set the environment for the target you want using: source build/envsetup.sh lunch 2. Build your own NDK sysroot to contain latest bionic changes and set the NDK sysroot environment variable. cd ${ANDROID_BUILD_TOP}/ndk For arm: ./build/tools/build-ndk-sysroot.sh --abi=arm export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-arm For x86: ./build/tools/build-ndk-sysroot.sh --abi=x86 export NDK_SYSROOT=${ANDROID_BUILD_TOP}/ndk/build/platforms/android-3/arch-x86 3. Set the NDK toolchain environment variable. For arm: export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/arm-linux-androideabi- For x86: export NDK_TOOLCHAIN=${ANDROID_TOOLCHAIN}/i686-linux-android- II. Compile perf for Android ------------------------------------------------ You need to run make with the NDK toolchain and sysroot defined above: For arm: make WERROR=0 ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}" For x86: make WERROR=0 ARCH=x86 CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}" III. Install perf ----------------------------------------------- You need to connect to your Android device/emulator using adb. Install perf using: adb push perf /data/perf If you also want to use perf-archive you need busybox tools for Android. For installing perf-archive, you first need to replace #!/bin/bash with #!/system/bin/sh: sed 's/#!\/bin\/bash/#!\/system\/bin\/sh/g' perf-archive >> /tmp/perf-archive chmod +x /tmp/perf-archive adb push /tmp/perf-archive /data/perf-archive IV. Environment settings for running perf ------------------------------------------------ Some perf features need environment variables to run properly. You need to set these before running perf on the target: adb shell # PERF_PAGER=cat IV. Run perf ------------------------------------------------ Run perf on your device/emulator to which you previously connected using adb: # ./data/perf class='label'>context:space:mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-01-15 16:09:50 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-01-15 16:09:50 -0800
commit99421c1cb27fb837e93b517036fab4500fe39de5 (patch)
treede5fc5bacb671223f389793ad643cebe520bc292 /sound/soc
parentc92816275674c1491ce228ee49aa030a5fa1be04 (diff)
parent93362fa47fe98b62e4a34ab408c4a418432e7939 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
Pull namespace fixes from Eric Biederman: "This tree contains 4 fixes. The first is a fix for a race that can causes oopses under the right circumstances, and that someone just recently encountered. Past that are several small trivial correct fixes. A real issue that was blocking development of an out of tree driver, but does not appear to have caused any actual problems for in-tree code. A potential deadlock that was reported by lockdep. And a deadlock people have experienced and took the time to track down caused by a cleanup that removed the code to drop a reference count" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: sysctl: Drop reference added by grab_header in proc_sys_readdir pid: fix lockdep deadlock warning due to ucount_lock libfs: Modify mount_pseudo_xattr to be clear it is not a userspace mount mnt: Protect the mountpoint hashtable with mount_lock
Diffstat (limited to 'sound/soc')