簡體   English   中英

為Android NDK交叉編譯MPICH庫

[英]Cross-compiling a MPICH library for Android NDK

我的目標是在Android手機上運行MPICH。 我正在使用Debian Jessie。 我以為可以通過本教程來實現: 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

但是我仍然有這種錯誤:

配置:錯誤: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-asm shared --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-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 =焦油

TARFLAGS =-無遞歸

MAKEDEPPROG = gcc

LIBDIR = lib

比起HIPL,我嘗試通過以下類似方式交叉編譯MPICH

下載並交叉編譯HIPL。 cd〜bzr co lp:hipl trunk cd trunk編輯configure.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中,

  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:錯誤:未知類型名稱'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:1043: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]:添加//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

您對我應該如何使它正常工作有什么建議?

在Linux中,在netinet/in.h in_port_t類型定義為uint16_t 使用此typedef的唯一位置是sockaddr_in的定義。

Android NDK不定義或使用in_port_t ,而是使用unsigned short int 要使用Android NDK編譯代碼,請輸入typedef in_port_t或將其替換為unsigned short int

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM