<p>Androidでのiperf3のコンパイルは、次のエラーで失敗します。</p>

作成日 2016年05月07日  ·  7コメント  ·  ソース: esnet/iperf

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

main.c:62:エラー:「__ gnu_mcount_nc」への未定義の参照
main.c:124:エラー:「__ gnu_mcount_nc」への未定義の参照
main.c:131:エラー:「__ gnu_mcount_nc」への未定義の参照
cjson.c:50:エラー:「__ gnu_mcount_nc」への未定義の参照
collect2:エラー:ldが1つの終了ステータスを返しました

私はAndroid用のiperf3バイナリをコンパイルしようとしています。 android用のiperf3バイナリをコンパイルするための具体的な情報がないことに非常に失望しています。 誰か助けてもらえますか?

ありがとう、
-Hardik

documentation portability

最も参考になるコメント

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

全てのコメント7件

cjson.c:50:エラー:「__ gnu_mcount_nc」への未定義の参照
cjson.c:56:エラー:「__ gnu_mcount_nc」への未定義の参照
cjson.c:72:エラー:「__ gnu_mcount_nc」への未定義の参照
cjson.c:85:エラー:「__ gnu_mcount_nc」への未定義の参照

iperf3はAndroidを公式にサポートしておらず、これを実行するためのリソースがありません。 したがって、「ヘルプが必要」としてタグ付けします。

iperf2はAndroidを公式にサポートしていることに注意してください。 おそらくそれはより適切なプラットフォームかもしれませんか?

私は同じ問題に直面していますが、これについて何か提案はありますか?

目的のために、ConfigureスクリプトをCMakeに置き換えました。 このコンパイルはAndroid用にできると確信していますが、現在はiOS用にコンパイルしています。

https://github.com/palmerc/iperf

[アップデート]

HAVE_ENDIAN1の設定

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。

働いた。 また、-D ANDROID_ABI = arm64-v8aでテストしました

誰かが望むなら、私はプルリクエストとしてCMakeビルドを提出することができます

または、src / Makefile.inを編集して、iperf3_profile_CFLAGSおよびiperf3_profile_LDFLAGSから「-pg」を削除します。

この問題の3つの回避策を、最小の労力から最大の労力の順に示します。

  1. iperf3プロファイル実行可能ファイルのリンクが失敗した時点で、「通常の」iperf3実行可能ファイルはおそらくすでに作成されています...少なくとも私のシステムにはあります。 したがって、makeプロセスからのエラー終了(およびビルドホストでの少しの無駄な作業)を受け入れる場合は、何もする必要がない可能性があります。

  2. configureステップの後、 src/Makefileに次のような定義があります。

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

このように編集すると、プロファイルされたiperf3のビルドが無効になります。

noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT)
  1. 上記の項目2と同様ですが、より永続的です... src/Makefile.amを編集して、次のように行の読みを変更した場合:
noinst_PROGRAMS         = t_timer t_units t_uuid iperf3_profile

このように見えるために:

noinst_PROGRAMS         = t_timer t_units t_uuid

次に、 ./bootstrap.sh実行します。これにより、プロジェクトのMakefileが再生成され、プロファイルされたiperf3実行可能ファイルが(そのソースツリー内で)永続的に除外されます。

この時点で、これをFAQ項目として記述し、問題をクローズする傾向があります。

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

このページは役に立ちましたか?
0 / 5 - 0 評価