<p>La compilation iperf 3 sur Android échoue avec l'erreur suivante.</p>

Créé le 7 mai 2016  ·  7Commentaires  ·  Source: esnet/iperf

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

main.c:62 : erreur : référence non définie à '__gnu_mcount_nc'
main.c:124 : erreur : référence non définie à '__gnu_mcount_nc'
main.c:131 : erreur : référence non définie à '__gnu_mcount_nc'
cjson.c:50 : erreur : référence non définie à '__gnu_mcount_nc'
collect2 : erreur : ld a renvoyé 1 état de sortie

J'essaie de compiler le binaire iperf3 pour Android. Je suis très déçu qu'il n'y ait pas d'informations concrètes pour compiler le binaire iperf3 pour Android. Quelqu'un pourrait-il s'il vous plaît aider?

Merci,
-Hardik

documentation portability

Commentaire le plus utile

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

Tous les 7 commentaires

cjson.c:50 : erreur : référence non définie à '__gnu_mcount_nc'
cjson.c:56 : erreur : référence non définie à '__gnu_mcount_nc'
cjson.c:72 : erreur : référence non définie à '__gnu_mcount_nc'
cjson.c:85 : erreur : référence non définie à '__gnu_mcount_nc'

iperf3 ne prend pas officiellement en charge Android et nous n'avons pas les ressources pour nous en occuper. Donc, étiqueter comme « aide recherchée ».

Notons qu'iperf2 supporte officiellement Android. Peut-être que cela pourrait être une plate-forme plus appropriée?

Je suis confronté au même problème, y a-t-il une suggestion pour cela?

J'ai remplacé le script Configure par CMake pour mes besoins. Je suis presque sûr que je pourrais obtenir cette compilation pour Android, mais actuellement je compile pour iOS.

https://github.com/palmerc/iperf

[Mettre à jour]

Paramètre 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 .

Travaillé. J'ai aussi testé avec -D ANDROID_ABI=arm64-v8a

Si quelqu'un le souhaite, je peux soumettre le build CMake en tant que pull request

Sinon, éditez src/Makefile.in, en supprimant "-pg" de iperf3_profile_CFLAGS et iperf3_profile_LDFLAGS.

Voici trois solutions de contournement pour ce problème, dans l'ordre du moindre effort au plus d'effort :

  1. Au moment où la liaison de l'exécutable profilé iperf3 échoue, l'exécutable iperf3 "normal" est probablement déjà créé... du moins il l'est sur mes systèmes. Donc, si vous êtes prêt à accepter la sortie d'erreur du processus de fabrication (et un peu de travail gaspillé sur l'hôte de construction), vous n'aurez peut-être rien à faire.

  2. Après l'étape configure , il y aura une définition dans src/Makefile qui ressemble à ceci :

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

Si vous le modifiez pour qu'il ressemble à ceci, cela désactivera la construction de l'iperf3 profilé :

noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT)
  1. Similaire à l'élément 2 ci-dessus, mais plus permanent... si vous modifiez src/Makefile.am et changez la ligne comme suit :
noinst_PROGRAMS         = t_timer t_units t_uuid iperf3_profile

Pour ressembler à ça :

noinst_PROGRAMS         = t_timer t_units t_uuid

Et puis exécutez ./bootstrap.sh , cela régénérera les Makefiles du projet pour rendre permanente l'exclusion de l'exécutable iperf3 profilé (dans cette arborescence source).

À ce stade, je suis enclin à simplement écrire ceci en tant qu'élément de la FAQ et clore le problème.

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

Cette page vous a été utile?
0 / 5 - 0 notes