Compilazione incrociata di una libreria MPICH per Android NDK

Cerbia 06/14/2013. 1 answers, 988 views
android android openssl arm cross-compiling mpich

Il mio obiettivo è eseguire MPICH su telefoni Android. Sto usando Debian Jessie. Ho pensato di ottenerlo seguendo questo tutorial: http://hex.ro/wp/projects/personal-cloud-computing/compiling-mpich2-for-android-and-running-on-two-phones/ ma invece di creare toolchain con Buildroot ho deciso di crearlo da Android NDK, come in questo sito: http://www.threadstates.com/articles/2013/setting-up-an-android-cross-compiling-environment-with-the -ndk.html Ho provato ad usare le versioni di libreria MPICH 2.1.4, 2.1.5, 3.0.4 e configurarlo usando il comando:

sudo CFLAGS=" -march=armv5 -mfpu=vfp -static "
 CC=/home/cerbia/android/bin/arm-linux-androideabi-gcc ./configure
 --prefix=/home/cerbia/old --host=arm-linux --with-pm=smpd --disable-f77 --disable-fc 

ma avevo ancora questo tipo di errore:

configure: error: SMPD richiede il supporto per MD5 e configure non è riuscito a trovare né md5_calc in md5.h né MD5 in openssl / md5.h

Ho scoperto che è collegato alla versione di openssl e ho provato a seguire questa istruzione:

Scarica, compila, modifica e installa OpenSSL nella directory NDK. cd ~ wget www.openssl.org/source/openssl-1.0.0.tar.gz tar xvzf

openssl-1.0.0g.tar.gz cd openssl-1.0.0g ./config no-asm shared --prefix = $ ANDROID_ROOT / piattaforme / android-3 / arch-arm / usr

modifica Makefile:
CC = arm-linux-gnueabi-gcc-4.6

CFLAG = -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_N -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -fPIC

DEPFLAG = -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_R C5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE

PEX_LIBS =

EX_LIBS = -ldl

EXE_EXT =

ARFLAGS =

AR = arm-linux-gnueabi-ar $ (ARFLAGS) r

RANLIB = arm-linux-gnueabi-ranlib

NM = arm-linux-gnueabi-nm

PERL = / usr / bin / perl

TAR = tar

TARFLAGS = --no-ricorsione

MAKEDEPPROG = gcc

LIBDIR = lib

Invece di HIPL ho provato a compilare a croce MPICH in modo analogo come di seguito

Scarica e cross-compila HIPL. cd ~ bzr co lp: hipl trunk cd trunk modifica configure.ac e commenta tutto l'autoreconf AM_CFLAGS --install

./configure --disable-gcc-warn --disable-firewall -host = arm-linux

CC = arm-linux-gnueabi-gcc-4.6

CPPFLAGS = "- I $ ANDROID_ROOT / piattaforme / android-3 / arch-braccio / usr / include"

CFLAGS = "- nostdlib"

LDFLAGS = "- Wl, -rpath-link = $ ANDROID_ROOT / piattaforme / android-3 / arch-braccio / usr / lib, -L $ ANDROID_ROOT / piattaforme / android-3 / arch-braccio / usr / lib"

LIBS = "- lc" make make all-am make [1]: Immissione directory `/ home / mkomu / projects / hipl-bzr / arm 'CC lib / core / builder.lo Nel file

incluso da lib / core / debug.h: 34: 0,

from lib/core/crypto.h:43,

             from lib/core/builder.c:100: lib/core/protodefs.h:917:5: error: unknown type name 'in_port_t' 

lib / core / protodefs.h: 929: 5: errore: nome tipo sconosciuto 'in_port_t'

lib / core / protodefs.h: 1027: 5: errore: nome del tipo sconosciuto 'in_port_t'

lib / core / protodefs.h: 1036: 5: errore: nome tipo sconosciuto 'in_port_t'

lib / core / protodefs.h: 1043: 5: errore: nome del tipo sconosciuto 'in_port_t'

lib / core / protodefs.h: 1054: 5: errore: nome del tipo sconosciuto 'in_port_t'

lib / core / protodefs.h: 1055: 5: errore: nome tipo sconosciuto 'in_port_t' ...

proviene dal sito: bugs.launchpad.net/hipl/+bug/715126

ma ho avuto gli stessi errori di persona lì ..

make [8]: Wejście do katalogu `/home/cerbia/old/mpich2-1.3.2/src/mpid/ch3/channels/nemesis/nemesis/netmod/tcp 'CC tcp_finalize.c Nel file incluso da tcp_finalize.c: 7: 0: tcp_impl.h: 108: 89: errore: nome del tipo sconosciuto "in_port_t" make [8]: * [tcp_finalize.o] Błąd 1

Hai qualche consiglio su cosa dovrei provare a farlo funzionare?

1 Answers


user2808012 09/23/2013.

In Linux, in_port_t viene tipizzato come uint16_t in netinet/in.h L'unico posto in cui viene usato typedef è nella definizione di sockaddr_in .

L'NDK di Android non definisce o utilizza in_port_t , ma utilizza invece unsigned short int . Per compilare il codice utilizzando l'NDK di Android, typedef in_port_t o sostituirlo con unsigned short int .

Related questions

Hot questions

Language

Popular Tags