Hallo, ich versuche Valgrind für Android-Arm zu bauen. Auf Linux Mint 13 schlägt es fehl mit:
%Vor%Ich benutze ndk-r8e und valgrind 3.8.1. Die Konfiguration endet mit:
%Vor%Was kann ich tun, um das Problem zu beheben? Alternativ, gibt es irgendwelche vorgefertigten android-arm Valgrind-Binärdateien, die ich verwenden kann?
Das Problem, das ich hatte, war, dass das configure-Skript die Umgebungsvariablen ignorierte. Um die make-Datei zu konfigurieren, habe ich stattdessen Folgendes getan:
%Vor%Dies stellt sicher, dass die Variablen richtig eingestellt sind und mit Linux Mint 13 funktionieren. Es funktioniert jedoch nicht mit OSX Mountain Lion. Ich würde jedem, der OSX ohne Zugriff auf eine Linux-Installation benutzt, raten, Linux auf einer virtuellen Maschine zu benutzen.
Zum Erstellen und Installieren von Valgrind für Android verwenden Sie das folgende Bash-Skript, das ich lieber build_valgrind.sh
aufruftUm mit RUN_HELLO_JNI_THROUGH_VALGRIND = true zu laufen, benötigen Sie zwei zusätzliche Skripte ( bootstrap_valgrind.sh , start_valgrind.sh ) in dem Verzeichnis, von dem Sie das Skript ausführen.
Wenn Sie das Skript mit dem Flag RUN_HELLO_JNI_THROUGH_VALGRIND = true ausführen, wird die Anwendung hallo-jni aus dem Verzeichnis samples innerhalb des Android NDK HOME erstellt, auf dem Telefon bereitgestellt und über Valgrind ausgeführt. Dabei können Sie entweder das Callgrind- oder das Mmcheck-Tool verwenden Geben Sie das Skript start_valgrind.sh an.
Die anderen zwei Skripts sind hier beschrieben: Ссылка
Hier ist meine Verzeichnisstruktur:
%Vor%Ich habe getestet, dass es funktioniert (memcheck und callgrind Tools) auf einem Samsung Galaxy Nexus Gerät mit CyanogenMod 10.2.1 und Android 4.3.1 und CyanogenMod 11 20140804 Snapshot, Android 4.4.4
Sie können die Dateigröße der generierten Ausgabe mit: adb shell ls -lR "/sdcard/*grind*"
Das Skript build_valgrind.sh :
%Vor%Damit bekomme ich valgrind für mich auf Linux kompilieren. (mit android-ndk-r8e und valgrind-3.8.1)
Ich musste autogen.sh nicht ausführen, da ich den Teerball von der Website heruntergeladen hatte.
Stellen Sie außerdem sicher, dass die TOOLCHAIN=
-Zeile auf eine gültige Toolchain zeigt.
Es kam schließlich zu einem Kompilierungsfehler, der
sagt %Vor% Es scheint, als hätte jemand vergessen, #include <stdint.h>
irgendwo hinzuzufügen. Um das zu beheben, habe ich $NDK_HOME/platforms/android-14/arch-arm/usr/include/elf.h
bearbeitet und #include <stdint.h>
zum Include-Abschnitt dieses Headers hinzugefügt. Hinweis: Dies ist wahrscheinlich nicht die beste Lösung, aber es ist die eine, die ich gefunden habe, die die Kompilierungsfehler behoben.
Auf Mac konnte ich es bis zum unknown type uint32_t
-Teil kompilieren, indem ich ändere, wie das configure-Skript die Kernel-Version überprüft.
Suchen Sie im configure-Skript nach einer Zeile kernel='uname -r'
und ändern Sie sie in kernel=3.9.2
. (Es gibt zwei kernel='uname -r'
Linien ersetzen die erste oder beide, wenn Ihnen danach ist)
Dies verhindert, dass das configure-Skript den Host-Kernel betrachtet, wenn es entscheidet, wie es valgrind erstellen soll. ( uname -r
greift den Host-Kernel)
Ich glaube, das Hinzufügen von #include <stdint.h>
zu elf.h
sollte auf Mac funktionieren, aber ich habe es nicht getestet.
in android Tutorial eine Option ist verpasst RANLIB, nachdem ich es eingestellt habe - ich habe schließlich Valgrind-3.11.0 auf OSX für Android
kompiliert %Vor%Ich habe diesen Fehler, wenn ich versuche, mit r8e zu bauen. Aber wenn Sie rXb-ndk ( r7b oder r8b ) verwenden, wird diese Fehlermeldung nicht angezeigt.
Tags und Links android macos android-ndk valgrind configure