Android Valgrind Build schlägt fehl

8

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?

    
Matthew Mitchell 08.05.2013, 21:38
quelle

5 Antworten

1

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.

    
Matthew Mitchell 08.10.2013, 19:10
quelle
18

Zum Erstellen und Installieren von Valgrind für Android verwenden Sie das folgende Bash-Skript, das ich lieber build_valgrind.sh

aufruft

Um 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*"

sehen

Das Skript build_valgrind.sh :

%Vor%     
bitek 08.10.2013 18:14
quelle
2

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.

%Vor%

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.

    
FDinoff 17.05.2013 15:40
quelle
2

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%     
Alexander Dalshov 07.04.2016 16:06
quelle
-1

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.

    
lllbendelll 22.05.2013 10:00
quelle