<p>A compilação do iperf 3 no Android falha com o seguinte erro.</p>

Criado em 7 mai. 2016  ·  7Comentários  ·  Fonte: esnet/iperf

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

main.c: 62: erro: referência indefinida a '__gnu_mcount_nc'
main.c: 124: erro: referência indefinida a '__gnu_mcount_nc'
main.c: 131: erro: referência indefinida a '__gnu_mcount_nc'
cjson.c: 50: erro: referência indefinida a '__gnu_mcount_nc'
collect2: erro: ld retornou 1 status de saída

Estou tentando compilar o binário iperf3 para android. Estou muito desapontado por não haver informações concretas para compilar o binário iperf3 para Android. Alguém poderia ajudar?

Obrigado,
-Hardik

documentation portability

Comentários muito úteis

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

Todos 7 comentários

cjson.c: 50: erro: referência indefinida a '__gnu_mcount_nc'
cjson.c: 56: erro: referência indefinida a '__gnu_mcount_nc'
cjson.c: 72: erro: referência indefinida a '__gnu_mcount_nc'
cjson.c: 85: erro: referência indefinida para '__gnu_mcount_nc'

O iperf3 oficialmente não suporta Android e não temos os recursos para fazer isso. Portanto, marcando como "procura-se ajuda".

Observamos que o iperf2 é oficialmente compatível com Android. Talvez essa seja uma plataforma mais adequada?

Estou enfrentando o mesmo problema, há alguma sugestão para isso?

Substituí o script Configure com CMake para meus propósitos. Tenho certeza de que poderia fazer essa compilação para Android, mas atualmente estou compilando para iOS.

https://github.com/palmerc/iperf

[Atualizar]

Configuração 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.

Trabalhado. Eu também testei com -D ANDROID_ABI = arm64-v8a

Se alguém quiser, posso enviar a compilação do CMake como uma solicitação de pull

Como alternativa, edite src / Makefile.in, excluindo "-pg" de iperf3_profile_CFLAGS e iperf3_profile_LDFLAGS.

Aqui estão três soluções alternativas para este problema, do menor esforço ao maior esforço:

  1. No momento em que a vinculação do executável com perfil iperf3 falha, o executável iperf3 "normal" provavelmente já está criado ... pelo menos está em meus sistemas. Portanto, se você estiver disposto a aceitar a saída de erro do processo de criação (e um pouco de trabalho desperdiçado no host de construção), pode não ser necessário fazer nada.

  2. Após a etapa configure , haverá uma definição em src/Makefile que se parece com isto:

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

Se você editá-lo para ficar assim, ele desativará a compilação do iperf3 com perfil:

noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT)
  1. Semelhante ao item 2 acima, mas mais permanente ... se você editar src/Makefile.am e alterar a leitura da linha assim:
noinst_PROGRAMS         = t_timer t_units t_uuid iperf3_profile

Para ficar assim:

noinst_PROGRAMS         = t_timer t_units t_uuid

E então execute ./bootstrap.sh , que irá regenerar os Makefiles do projeto para fazer a exclusão do executável iperf3 com perfil permanente (dentro daquela árvore de origem).

Neste ponto, estou inclinado a apenas escrever isso como um item de FAQ e encerrar o problema.

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

Esta página foi útil?
0 / 5 - 0 avaliações