1

私の目標は、Android フォンで MPICH を実行することです。Debian Jessie を使用しています。私はこのチュートリアルに従ってそれを達成すると思った : http://hex.ro/wp/projects/personal-cloud-computing/compiling-mpich2-for-android-and-running-on-two-phones/ Buildroot を使用したツールチェーンの作成について このサイトのように、Android NDK から作成することにしました 。 -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 共有 --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= アーム-linux-gnueabi-ranlib

NM= アーム-linux-gnueabi-nm

PERL=/usr/bin/perl

TAR=タール

TARFLAGS= --再帰なし

MAKEDEPPROG= gcc

LIBDIR=ライブラリ

HIPL の代わりに、以下のような類似の方法で MPICH をクロスコンパイルしようとしました。

HIPL をダウンロードしてクロスコンパイルします。cd ~ bzr co lp:hipl トランク cd トランク edit 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]: Wejście do catalogu `/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łąd 1

それを機能させるために何をすべきかアドバイスはありますか?

4

1 に答える 1

0

Linux では、 のin_port_tように型定義さuint16_tれていnetinet/in.hます。この typedef が使用される唯一の場所は、 の定義ですsockaddr_in

Android NDK は を定義または使用しませんin_port_tが、代わりに を使用しunsigned short intます。Android NDK を使用してコードをコンパイルするには、typedef in_port_tまたはunsigned short int.

于 2013-09-23T16:21:52.167 に答える