<p>Die iperf 3-Kompilierung auf Android schlägt mit folgendem Fehler fehl.</p>

Erstellt am 7. Mai 2016  ·  7Kommentare  ·  Quelle: esnet/iperf

Befehl:
./configure --host=arm-linux-gnueabihf --prefix=/home/ec2-user/iperf_install/ CC=arm-linux-androideabi-gcc CXX=arm-linux-androideabi-g++ CFLAGS=-static CXXFLAGS=- statisch

main.c:62: Fehler: undefinierter Verweis auf '__gnu_mcount_nc'
main.c:124: Fehler: undefinierter Verweis auf '__gnu_mcount_nc'
main.c:131: Fehler: undefinierter Verweis auf '__gnu_mcount_nc'
cjson.c:50: Fehler: undefinierter Verweis auf '__gnu_mcount_nc'
Collect2: Fehler: ld hat 1 Exit-Status zurückgegeben

Ich versuche, die iperf3-Binärdatei für Android zu kompilieren. Ich bin sehr enttäuscht, dass es keine konkreten Informationen zum Kompilieren der iperf3-Binärdatei für Android gibt. Könnte jemand bitte helfen?

Danke,
-Hardik

documentation portability

Hilfreichster Kommentar

ODER:
./configure --disable-profiling --host=arm-linux-androideabi

Alle 7 Kommentare

cjson.c:50: Fehler: undefinierter Verweis auf '__gnu_mcount_nc'
cjson.c:56: Fehler: undefinierter Verweis auf '__gnu_mcount_nc'
cjson.c:72: Fehler: undefinierter Verweis auf '__gnu_mcount_nc'
cjson.c:85: Fehler: undefinierter Verweis auf '__gnu_mcount_nc'

iperf3 unterstützt Android nicht offiziell und wir haben nicht die Ressourcen, dies zu übernehmen. Also als "Hilfe gesucht" markieren.

Wir stellen fest, dass iperf2 offiziell Android unterstützt. Vielleicht ist das eine geeignetere Plattform?

Ich stehe vor dem gleichen Problem, gibt es dazu einen Vorschlag?

Ich habe das Configure-Skript für meine Zwecke durch CMake ersetzt. Ich bin mir ziemlich sicher, dass ich diese Kompilierung für Android bekommen könnte, aber derzeit kompiliere ich für iOS.

https://github.com/palmerc/iperf

[Aktualisieren]

Einstellung von HAVE_ENDIAN 1

cmake -D ANDROID_PLATFORM=android-21 -G Ninja -D CMAKE_TOOLCHAIN_FILE=../android-ndk/android-ndk-r16b/build/cmake/android.toolchain.cmake ../iperf
cmake --build .

Hat funktioniert. Getestet habe ich auch mit -D ANDROID_ABI=arm64-v8a

Wenn jemand möchte, kann ich den CMake-Build als Pull-Request einreichen

Bearbeiten Sie alternativ src/Makefile.in und löschen Sie "-pg" aus iperf3_profile_CFLAGS und iperf3_profile_LDFLAGS.

Hier sind drei Problemumgehungen für dieses Problem, in der Reihenfolge vom geringsten Aufwand zum größten Aufwand:

  1. Zu dem Zeitpunkt, zu dem das Linken der iperf3-profilierten ausführbaren Datei fehlschlägt, ist die "normale" ausführbare iperf3-Datei wahrscheinlich bereits erstellt ... zumindest auf meinen Systemen. Wenn Sie also bereit sind, den Fehlerausgang des Make-Prozesses (und ein wenig verschwendete Arbeit auf dem Build-Host) zu akzeptieren, müssen Sie möglicherweise nichts tun.

  2. Nach dem Schritt configure gibt es eine Definition in src/Makefile , die wie folgt aussieht:

noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT) \
        iperf3_profile$(EXEEXT)

Wenn Sie es so bearbeiten, dass es so aussieht, wird der Build des profilierten iperf3 deaktiviert:

noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT)
  1. Ähnlich wie bei Punkt 2 oben, aber dauerhafter ... wenn Sie src/Makefile.am bearbeiten und die Zeilenlesung wie folgt ändern:
noinst_PROGRAMS         = t_timer t_units t_uuid iperf3_profile

Um so auszusehen:

noinst_PROGRAMS         = t_timer t_units t_uuid

Und dann führen Sie ./bootstrap.sh , wodurch die Projekt-Makefiles neu generiert werden, um den Ausschluss der profilierten ausführbaren iperf3-Datei dauerhaft zu machen (innerhalb dieses Quellbaums).

An dieser Stelle neige ich dazu, dies einfach als FAQ-Element aufzuschreiben und das Thema zu schließen.

ODER:
./configure --disable-profiling --host=arm-linux-androideabi

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen