<p>Компиляция iperf 3 на Android завершается ошибкой.</p>

Созданный на 7 мая 2016  ·  7Комментарии  ·  Источник: esnet/iperf

Команда:
./configure --host = arm-linux-gnueabihf --prefix = / home / ec2-user / iperf_install / CC = arm-linux-androidabi-gcc CXX = arm-linux-androidabi-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 статус выхода

Я пытаюсь скомпилировать двоичный файл iperf3 для Android. Я очень разочарован тем, что нет конкретной информации по компиляции бинарника iperf3 для android. Может кто-нибудь помочь?

Спасибо,
-Hardik

documentation portability

Самый полезный комментарий

ИЛИ:
./configure --disable-profiling --host = arm-linux-androidabi

Все 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_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.

Работал. Я также тестировал с -D ANDROID_ABI = arm64-v8a

Если кто-то хочет, я могу отправить сборку CMake как запрос на перенос

Или отредактируйте src / Makefile.in, удалив «-pg» из iperf3_profile_CFLAGS и iperf3_profile_LDFLAGS.

Вот три способа решения этой проблемы в порядке от наименьших усилий к наибольшим усилиям:

  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 , который повторно сгенерирует Makefiles проекта, чтобы исключить профилированный исполняемый файл iperf3 постоянным (в этом исходном дереве).

На данный момент я склонен просто написать это как элемент часто задаваемых вопросов и закрыть проблему.

ИЛИ:
./configure --disable-profiling --host = arm-linux-androidabi

Была ли эта страница полезной?
0 / 5 - 0 рейтинги