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
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 :
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.
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)
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
Commentaire le plus utile
OU:
./configure --disable-profiling --host=arm-linux-androideabi