2013-06-14 9 views
1

내 목표는 안드로이드 폰에서 MPICH를 실행하는 것입니다. 데비안 제시를 사용하고 있습니다. 내가 달성하고 있다고 생각하는이 튜토리얼 다음 http://hex.ro/wp/projects/personal-cloud-computing/compiling-mpich2-for-android-and-running-on-two-phones/ 하지만이 사이트로, 안드로이드 NDK에서 그것을 만들기로 결정 대신 Buildroot와 툴체인을 만드는 : http://www.threadstates.com/articles/2013/setting-up-an-android-cross-compiling-environment-with-the-ndk.html 내가 MPICH 라이브러리 버전 2.1.4을 사용하려고, 2.1.5, 3.0.4 및 명령 사용하여 구성합니다안드로이드 용 MPICH 라이브러리 크로스 컴파일 NDK

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 

을하지만, 난 여전히 이런 종류의 오류가 있었다 : 그것은하려면 openssl 버전 연결되어 있는지,

configure: error: SMPD requires MD5 support, and configure could not find either md5_calc in md5.h or MD5 in openssl/md5.h

내가 찾은 및 I가 시도 다음 지시 사항을 따르십시오.

Download, compile, modify and install OpenSSL to the NDK directory. cd ~ wget www.openssl.org/source/openssl-1.0.0g.tar.gz tar xvzf

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

edit 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-recursion

MAKEDEPPROG= gcc

LIBDIR=lib

대신 HIPL의 I가 시도보다 ..

Download and cross-compile HIPL. cd ~ bzr co lp:hipl trunk cd trunk edit configure.ac and comment out all AM_CFLAGS autoreconf --install

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

CC=arm-linux-gnueabi-gcc-4.6

CPPFLAGS="-I$ANDROID_ROOT/platforms/android-3/arch-arm/usr/include"

CFLAGS="-nostdlib"

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

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

included from 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: error: unknown type name 'in_port_t'

lib/core/protodefs.h:1027:5: error: unknown type name 'in_port_t'

lib/core/protodefs.h:1036:5: error: unknown type name 'in_port_t'

lib/core/protodefs.h:1043:5: error: unknown type name 'in_port_t'

lib/core/protodefs.h:1054:5: error: unknown type name 'in_port_t'

lib/core/protodefs.h:1055:5: error: unknown type name 'in_port_t' ...

it comes from site: bugs.launchpad.net/hipl/+bug/715126

다음과 같이 유사한 방법으로 MPICH를 크로스 컴파일하지만 난이 사람과 같은 오류를 가지고

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 In file included from tcp_finalize.c:7:0: tcp_impl.h:108:89: error: unknown type name 'in_port_t' make[8]: * [tcp_finalize.o] Błąd 1

마 당신은 내가 그것을 작동하게하려고 노력해야 할 충고가 있습니까?

답변

0

리눅스에서 in_port_tuint16_tnetinet/in.h으로 typedefed됩니다. 이 typedef가 사용 된 유일한 위치는 sockaddr_in입니다.

Android NDK는 in_port_t을 정의하거나 사용하지 않고 대신 unsigned short int을 사용합니다. Android NDK를 사용하여 코드를 컴파일하려면 typedef in_port_t 또는 unsigned short int으로 바꾸십시오.

관련 문제