Команда:
./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
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.
Вот три способа решения этой проблемы в порядке от наименьших усилий к наибольшим усилиям:
К моменту сбоя связывания профилированного исполняемого файла iperf3 "нормальный" исполняемый файл iperf3, вероятно, уже создан ... по крайней мере, он есть в моих системах. Так что, если вы готовы принять ошибку выхода из процесса make (и немного потраченной впустую работы на хосте сборки), вам, возможно, не нужно ничего делать.
После шага 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)
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
Самый полезный комментарий
ИЛИ:
./configure --disable-profiling --host = arm-linux-androidabi