首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于Android的MPICH库的交叉编译

用于Android的MPICH库的交叉编译
EN

Stack Overflow用户
提问于 2013-06-14 14:51:33
回答 1查看 1.1K关注 0票数 1

我的目标是在Android手机上运行MPICH。我在用Debian Jessie。我认为我可以在本教程中实现这个目标:http://hex.ro/wp/projects/personal-cloud-computing/compiling-mpich2-for-android-and-running-on-two-phones/,但我决定使用Android创建工具链,就像在这个站点上一样:http://www.threadstates.com/articles/2013/setting-up-an-android-cross-compiling-environment-with-the-ndk.html尝试使用http://www.threadstates.com/articles/2013/setting-up-an-android-cross-compiling-environment-with-the-ndk.html库2.1.4、2.1.5、3.0.4,并使用命令对其进行配置:

代码语言:javascript
运行
复制
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

但我还是犯了这样的错误:

配置:错误: SMPD需要MD5支持,配置在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共享--prefix=$ANDROID_ROOT/platforms/android-3/arch-arm/usr 编辑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-框架指针-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=焦油 TARFLAGS= --非递归 MAKEDEPPROG= gcc LIBDIR=lib

而不是HIPL,我尝试以类似的方式交叉编译MPICH,如下所示

下载并交叉编译HIPL。cd ~ bzr co lp:hipl主干cd主干编辑configure.ac并注释掉所有AM_CFLAGS autoreconf -install /配置-禁用-gcc-警告-禁用-防火墙-主机=arm-linux CC=arm-linux-gnueabi-gcc-4.6 CPPFLAGS="-I$ANDROID_ROOT/platforms/android-3/arch-arm/usr/include“ CFLAGS="-nostdlib“ -rpath-link=$ANDROID_ROOT/platforms/android-3/arch-arm/usr/lib,-L$ANDROID_ROOT/platforms/android-3/arch-arm/usr/lib“LDFLAGS="-Wl LIBS="-lc“make all-am make1:在文件中输入目录`/home/mkomu/projects/hipl/arm‘CC /core/builder.lo 包含于lib/core/调试器h:34:0, 从lib/core/cryp.h:43,从lib/core/builder.c:100: 100:lib/core/crypto.h.h:917:5: error:未知类型名称'in_port_t‘ H:929:5:错误:未知类型名称'in_port_t‘ H:1027:5:错误:未知类型名称'in_port_t‘ H:1036:5:错误:未知类型名称'in_port_t‘ H:1043:5:错误:未知类型名称'in_port_t‘ H:1054:5:错误:未知类型名称'in_port_t‘ .core=‘core 5’>1055:5:错误:未知类型名称'in_port_t‘. 它来自网站:bugs.unchpad.net/hipl/+bug/715126

但我和那里的人犯了同样的错误。

`/home/cerbia/old/mpich2-1.3.2/src/mpid/ch3/channels/nemesis/nemesis/netmod/tcp‘make8 tcp_finalize.c文件中包含的tcp_finalize.c:7:0: tcp_impl.h:108:89: error:未知类型名称'in_port_t’make8:* tcp_finalize.o Błąd 1

你有什么建议,我应该努力使它发挥作用吗?

EN

回答 1

Stack Overflow用户

发布于 2013-09-23 16:21:52

在Linux中,in_port_tnetinet/in.h中被键入为uint16_t。在sockaddr_in的定义中只使用了该类型胡枝子。

Android不定义或使用in_port_t,而是使用unsigned short int。要使用Android编译代码,可以使用typedef in_port_t或者用unsigned short int替换它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17111281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档