首页 文章

交叉编译Android NDK的MPICH库

提问于
浏览
1

我的目标是在Android手机上运行MPICH . 我在本教程之后实现了这一点:http://hex.ro/wp/projects/personal-cloud-computing/compiling-mpich2-for-android-and-running-on-two-phones/但是我没有使用Buildroot创建工具链,而是决定从Android NDK创建它,就像在这个网站上一样: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并使用命令配置它:

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

但我仍然有这种错误:

configure:错误:SMPD需要MD5支持,并且configure无法在md5.h中找到md5_calc或在openssl / md5.h中找不到MD5

我发现,它与openssl版本连接,我试图遵循这条指令:

下载,编译,修改和安装OpenSSL到NDK目录 . 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

我试图以类似的方式交叉编译MPICH而不是HIPL

下载并交叉编译HIPL . cd~bzr co lp:hipl trunk cd trunk edit.ac并注释掉所有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]:输入目录`/ home / mkomu / projects / hipl-bzr / arm'CC lib / core / builder.lo在lib / core / debug.h:34:0中包含的文件中,来自lib / core / crypto.h:43,

来自lib / core / builder.c:100:lib / core / protodefs.h:917:5:错误:未知类型名称'in_port_t'
lib / core / protodefs.h:929:5:错误:未知类型名称'in_port_t'lib / core / protodefs.h:1027:5:错误:未知类型名称'in_port_t'lib / core / protodefs.h:1036: 5:错误:未知类型名称'in_port_t'lib / core / protodefs.h:104:5:错误:未知类型名称'in_port_t'lib / core / protodefs.h:1054:5:错误:未知类型名称'in_port_t' lib / core / protodefs.h:1055:5:错误:未知类型名称'in_port_t'...来自网站:bugs.launchpad.net/hipl/ bug / 715126

但我和那里的人有同样的错误..

make [8]:Wejściedokatalogu`/home/cerbia/old/mpich2-1.3.2/src/mpid/ch3/channels/nemesis/nemesis/netmod/tcp'CC tcp_finalize.c在tcp_finalize.c中包含的文件中:7:0:tcp_impl.h:108:89:错误:未知类型名称'in_port_t'make [8]:* [tcp_finalize.o]Błąd1

你有什么建议我应该尝试使它工作吗?

1 回答

  • 0

    在Linux中, in_port_tnetinet/in.h 中的类型定义为 uint16_t . 使用此typedef的唯一位置是 sockaddr_in 的定义 .

    Android NDK未定义或使用 in_port_t ,而是使用 unsigned short int . 要使用Android NDK编译代码,请 typedef in_port_t 或将其替换为 unsigned short int .

相关问题