1. 程式人生 > >Ubuntu上交叉編譯valgrind for Android 4.0.4的過程與注意事項

Ubuntu上交叉編譯valgrind for Android 4.0.4的過程與注意事項

編譯環境:Ubuntu x86_64(Linux root 2.6.32-45-generic #101-Ubuntu SMP Mon Dec 3 15:39:38 UTC 2012 x86_64 GNU/Linux) 執行環境:Android 4.0.4 (Linux kernel 3.0.21 OMAP4460) 一、下載NDK9和valgrind 3.8.1。 二、按照valgrind 3.8.1中的README.android進行編譯,步驟如下: 1. 指定NDK根目錄 export NDKROOT=/path/to/android-ndk-r9 2. 指定通用的安卓裝置 export HWKIND=generic 3. 指定交叉工具鏈路徑 export AR=$NDKROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar export LD=$NDKROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld export CC=$NDKROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc 4. 到valgrind目錄下配置valgrind cd /path/to/valgrind CPPFLAGS="--sysroot=$NDKROOT/platforms/android-3/arch-arm -DANDROID_HARDWARE_$HWKIND"
CFLAGS="--sysroot=$NDKROOT/platforms/android-3/arch-arm"
 ./configure --prefix=/data/local/valgrind --host=armv7-unknown-linux --target=armv7-unknown-linux  --with-tmpdir=/sdcard
注:配置這步經常報錯,前面的路徑等設定需要細心啊。 5. 編譯並安裝到指定路徑 make -j2
make -j2 install DESTDIR=`pwd`/Inst 注:-j2表示利用雙核提升編譯速度,對速度不在乎的可以去掉。 三、安卓上執行 1. 拷貝Inst到安卓系統/data/local/valgrind中。 注:假如路徑不是編譯配置時的路徑,這時需要重新設定一下,否則會報錯。“valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory export VALGRIND_LIB=/data/local/valgrind/lib/valgrind/
2. 安卓4.0.4下(OMAP4460)執行Memcheck效果 127|[email protected]:/data/local # /data/local/valgrind/bin/valgrind ls                   ==3509== Memcheck, a memory error detector
==3509== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==3509== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==3509== Command: ls
==3509==
--3509-- WARNING: Serious error when reading debug info
--3509-- When reading debug info from /data/local/valgrind/lib/valgrind/vgpreload_core-arm-linux.so:
--3509-- Can't make sense of .data section mapping
test
tmp

==3509==
==3509== HEAP SUMMARY:
==3509==     in use at exit: 4,096 bytes in 1 blocks
==3509==   total heap usage: 5 allocs, 4 frees, 8,337 bytes allocated
==3509==
==3509== LEAK SUMMARY:
==3509==    definitely lost: 0 bytes in 0 blocks
==3509==    indirectly lost: 0 bytes in 0 blocks
==3509==      possibly lost: 0 bytes in 0 blocks
==3509==    still reachable: 4,096 bytes in 1 blocks
==3509==         suppressed: 0 bytes in 0 blocks
==3509== Rerun with --leak-check=full to see details of leaked memory
==3509==
==3509== For counts of detected and suppressed errors, rerun with: -v
==3509== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
[email protected]:/data/local #  3. 安卓4.0.4下(OMAP4460)執行callgrind步驟 /data/local/valgrind/bin/valgrind --tool=callgrind ./test 執行完成後在目錄下生成"callgrind.out.XXX"(XXX是程序ID號)是分析檔案,可以直接利用:/data/local/valgrind/bin/callgrind_annotate callgrind.out.XXX 列印結果; 也可以在Ubuntu上使用:gprof2dot.py -f callgrind callgrind.out.XXX |dot -Tpng -o report.png 來生成圖形化結果(需下載gprof2dot.py指令碼,詳見參考資料3)。 注: 1、使用callgrind時,./test程式執行時間短(<2s),運算量小的可以正常執行callgrind;而當test程式執行時間較長(>6S),運算量較大時,會導致安卓系統不穩定,無法正確執行下去,估計valgrind對安卓的相容性較差吧。 參考資料: 轉載自:

相關推薦

Ubuntu交叉編譯valgrind for Android 4.0.4過程注意事項

編譯環境:Ubuntu x86_64(Linux root 2.6.32-45-generic #101-Ubuntu SMP Mon Dec 3 15:39:38 UTC 2012 x86_64 GNU/Linux) 執行環境:Android 4.0.4 (Linux

交叉編譯e2fsprogs For android

由於需要使用dumpe2fs debugfs工具,因此交叉編譯了e2fsprogs的原始碼。本人在ubuntu 14.04下操作的1. 下載e2fsprogs的原始碼版本是1.42.6   2.  下載NDKhttps://developer.android.com/ndk/

Android 6.0 動態許可權申請注意事項

<strong><span style="font-size:32px;color:#000099;">許可權區分</span></strong> Android 6.0 為了保護使用者隱私,將一些許可權的申請放在了應用執行的

ubuntu下在模擬器執行編譯後的android原始碼

 前提是Ubuntu下已經編譯好了下載的安卓原始碼, 選擇最後一行的 android-sdk_r23.0.2-linux.tgz下載 第二步,解壓android-sdk_r23.0.2-linux.tgz ,比如說你解壓後的SDK所有檔案在/usr/local/src

ubuntu交叉編譯mono

local config ubuntu16 align 交叉編譯 disable vfp ces ati 環境:ubuntu16.04 配置: CC=arm-linux-yourabi-gcc CFLAGS="-march=armv7-a -mfloat-abi=softf

ubuntu交叉編譯ffmpeg

-s extra cast miss lar har share security project 環境:ubuntu16.04 交叉編譯器版本:4.8.3 依賴x264,lame x264: 1.wget ftp://ftp.videolan.org/pub/x264/s

NDk編譯opencv for Android,並引用在Unity3d遊戲中的一般步驟

ret app sset cpp unity3d 環境 ptr small var 本文使用:Unity3d + opencv + Android Unity3d中可以調用opencv 編譯好的.so 動態庫,在生成Android apk時可以正常運行。 因為An

使用 jenkins 自動化編譯cordova for android 生成 APK

apk app 開發 啟動 安卓 自動 class 系統 編寫 地址 引言 前文中已經介紹了什麽是cordova 為什麽要用cordova,基礎的環境搭建以及如何編譯打包生成APK安裝包,接下來我們介紹如何使用Jenkins 自動化編譯打包生成APK安裝包! 服務器搭建

ubuntu安裝交叉編譯工具

手裡有一塊樹莓派3b+,想用來學習嵌入式開發,雖然可以在上面直接安裝gcc,編譯原始碼,但一想到早晚會用到交叉編譯工具,還是學學怎麼裝吧。 網上一大堆亂七八糟的裝法,有的去github下載安裝,有的不知道什麼鬼,看不懂。 開啟ubuntu終端 使用sudo apt list gcc-

Ubuntu配置編譯GLFW並執行例項

文章目錄 1. 下載GLFW包 2. 編譯 3. Ubuntu下直接執行例項 4. 利用Clion執行例項 1. 下載GLFW包 進入

msys2下交叉編譯fftw(android

官方連結 ANDROID_ABI=x86 配置指令碼 INSTALL_DIR="`pwd`/fftw3/x86" SRC_DIR="`pwd`/../fftw-3.3.6-pl2" NDK_DIR=/D/Android/sdk/ndk-bundle cd $SRC_DI

Linux系統下編譯VLC for Android

操作步驟: 1、下載最新版本的Linux版jdk,將下載好的檔案解壓到/usr/android目錄下 tar zxvf jdk-10.0.2_linux-x64_bin.tar.gz 2、設定環境變數 使用sudo vi /etc/profile命令編輯環境

Ubuntu原始碼編譯安裝python3和pip遇到不能使用的問題

由於直接使用apt-get install python3.6的pip有問題,所以就想通過原始碼編譯安裝。 在Ubuntu上原始碼編譯安裝python3.6遇到【Objects/unicodeobject.o】的問題,導致編譯停止。 解決辦法 Usually, you can w

Building for Android TV — Episode 4

I heard you like settings..The Leanback Support Library offers a variety of widgets that help us displaying multimedia content in a pleasing fashion. It ba

Mac下編譯OpenH264 for android

簡介 OpenH264 是思科的開源專案,可以編碼解碼H264,常見的H264編碼器還有x264專案。 由於OpenH264專案的文件較少,初學的門檻較高,所以整理一些文章來幫忙初學者入門。 系列文章包括: 編譯OpenH264 for Window

AnyTrans for Android Mac 6.4.1破解版—安卓資料傳輸工具

軟體介紹 AnyTrans for Android是Mac平臺上一款安卓資料傳輸工具,從資料管理到跨裝置傳輸,使用者能夠以自己喜歡的方式從一個方便的地方完全控制自己的Android移動內容。 AnyTrans for Android Mac 6.4.1破解版點選下載AnyTrans for Android

ubuntu通過jenkins+Gradle搭建android自動化構建環境

準備工作 ================================ 1.安裝gradle 2.安裝linux_sdk開發包 3.安裝jenkins ======================

為了使用phpthreads,在Ubuntu重新編譯php原始碼和phpthread原始碼

傻瓜式apt-get 安裝的php不支援phpthreads,搜尋好久得到的答案是:使用原始碼編譯安裝。 下面開始: 1.下載php原始碼和phpthread原始碼,然後解壓. 使用的php版本是5.6.12,phpthreads版本是2.0.9 cd/usr/loca

windows10下編譯ffmpeg for android

本文記錄在windows10下編譯ffmpeg的過程: 環境:win10  ffmpeg-3.3 ndk-r14b 注意:一般來說低版本ndk編譯的能在高版本使用,但高版本ndk編譯的無法在低版本使用,因為NDK平臺不是後向相容的,而是前向相容的,因此請根據實際情況選擇

Ubuntu 14.04編譯AOSP for Nexus/Pixel

前言 雖說幾年前博主在一家公司做機頂盒的時候總是需要編譯Android原始碼,但是那時還沒有手中的愛機:Nexus 6,又名shamu。今天我要為它刷入一個自己編譯的Rom。拿起鍵盤就是幹。 筆者注:AOSP:Android Open Source P