Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

478
Views
Android NDK - arm-linux-androidabi-g++: no encontrado

Estoy tratando de construir la biblioteca POCO de C++ para un objetivo de Android en un Ubuntu nuevo que acabo de instalar para eso.

Instalé el NDK de Android en /home/user/dev/Android/android-ndk-r9-x86 y agregué la ruta al NDK en las variables de entorno usando:

export ANDROID_NDK_ROOT=/home/user/dev/Android/android-ndk-r9-x86

Para construir las bibliotecas, primero me muevo al directorio raíz de la biblioteca POCO y lo configuro usando:

 ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --static --config=Android

Para que compile bibliotecas estáticas .a, no compile los módulos que no quiero y compile para un objetivo de Android.

Pero llamar a make provoca el siguiente error:

 user@user-VirtualBox:~/dev/Lib/POCO/poco-1.6.1$ make make -C /home/user/dev/Lib/POCO/poco-1.6.1/Foundation make[1]: Entering directory `/home/user/dev/Lib/POCO/poco-1.6.1/Foundation' ** Compiling src/ArchiveStrategy.cpp (debug, static) arm-linux-androideabi-g++ -Iinclude -I/home/user/dev/Lib/POCO/poco-1.6.1/CppUnit/include -I/home/user/dev/Lib/POCO/poco-1.6.1/CppUnit/WinTestRunner/include -I/home/user/dev/Lib/POCO/poco-1.6.1/Foundation/include -I/home/user/dev/Lib/POCO/poco-1.6.1/XML/include -I/home/user/dev/Lib/POCO/poco-1.6.1/JSON/include -I/home/user/dev/Lib/POCO/poco-1.6.1/Util/include -I/home/user/dev/Lib/POCO/poco-1.6.1/Net/include -mthumb -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions -DPOCO_BUILD_HOST=user-VirtualBox -DPOCO_ANDROID -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING -DPOCO_NO_SHAREDMEMORY -g -D_DEBUG -c src/ArchiveStrategy.cpp -o /home/user/dev/Lib/POCO/poco-1.6.1/Foundation/obj/Android/armeabi/debug_static/ArchiveStrategy.o sh: 1: arm-linux-androideabi-g++: not found make[1]: *** [/home/user/dev/Lib/POCO/poco-1.6.1/Foundation/obj/Android/armeabi/debug_static/ArchiveStrategy.o] Error 127 make[1]: Leaving directory `/home/user/dev/Lib/POCO/poco-1.6.1/Foundation' make: *** [Foundation-libexec] Error 2

Make parece incapaz de encontrar el compilador utilizado para Android, y no tengo idea de por qué. Qué me estoy perdiendo ? ¿Olvidé algo al "instalar" el NDK?

Gracias.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

El error que está recibiendo es causado por una invocación de cadena de herramientas faltante; más bien, el comando/ejecutable/binario arm-linux-androideabi-g++ no se encontraba por ninguna parte.

Afortunadamente, podemos solucionar eso instalando la cadena de herramientas independiente , que en realidad tiene exactamente lo que te estás perdiendo, un compilador cruzado arm-linux-androideabi propósito general en lugar de algún otro proveedor/plataforma un poco más oscuro. crosscompiler/toolchain específico, como armv7a-marvell-linux-android que es lo que usa marvell, o arm-linux-android que es lo que usa Clang. Para obtener más información sobre Clang, mira aquí . Sin embargo, podría estar equivocado y que Clang en realidad produce una cadena de herramientas arm-linux-androideabi , pero no estoy seguro. Sé que puede usarlo fácilmente, pero no estoy seguro de si se puede usar "directamente", que es lo que está buscando. El "resto del trabajo" son solo algunas exportaciones de ruta, pero aún así. Estamos apuntando a la solución más perezosa aquí.

La cadena de herramientas independiente debería ser suficiente para su tarea, así que intente usarla tanto como sea posible sobre cualquier otra solución de compilación cruzada.

Sin embargo, si se siente aventurero, puede crear su propio compilador cruzado (¡o toda la cadena de herramientas!) usando la herramienta crosstool-ng . Sin embargo, trate de quedarse con la rama libc de Linaro; la experiencia personal me mostró que uno de alguna manera funciona mejor y causa la menor cantidad de problemas/pérdida de tiempo.

Además, asegúrese de descargar el adecuado para su arquitectura (arquitectura) y sistema operativo, aquí también importan 32 bits frente a 64 bits. Después de una larga discusión, nos dimos cuenta de que era un problema de "32 bits frente a 64 bits". Aquí hay un enlace para leer más al respecto.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!