7

all: Android モバイルの CCID スマート カード リーダーと通信できる Android アプリケーションを作成しています。 Ubuntu(PC上のLinux OS)では非常にうまくいきます。次に、それらを Android に移植しようとしましたが、クロスコンパイル中に多くの問題があります。これらの問題のほとんどは、Android の Bionic ライブラリに次のようないくつかのヘッダーと関数が欠けていることです。

  1. sys/fcntl.h、mqueue.h: そのようなファイルはありません。

  2. pthread_cancel: 未定義の参照。

そして今、実行可能な「pcscd」をビルドするためにpcscliteをクロスコンパイルしているときに、次のエラーが発生しました:

sd-daemon.c:35:23: 致命的なエラー:sys/fcntl.h:そのようなファイルまたはディレクトリはありません

Android.mk :

#===================================================
# ******  pcscd ******  
#===================================================

include $(CLEAR_VARS)
LOCAL_PRELINK_MODULE:=false
LOCAL_SRC_FILES:=atrhandler.c \
     debuglog.c \
     dyn_hpux.c \
     dyn_macosx.c \
     dyn_unix.c \
     eventhandler.c \
     hotplug_generic.c \
     ifdwrapper.c \
     pcscdaemon.c \
     powermgt_generic.c \
     prothandler.c \
     readerfactory.c \
     simclist.c \
     strlcat.c \
     sys_unix.c \
     tokenparser.c \
     hotplug_libudev.c \
     hotplug_libusb.c \
     hotplug_linux.c \
     hotplug_macosx.c \
     utils.c \
     winscard.c \
     winscard_msg.c \
     winscard_msg_srv.c \
     winscard_svc.c \
     sd-daemon.c
LOCAL_CFLAGS+= -DHAVE_LIBUSB
LOCAL_C_INCLUDES+=$(LOCAL_PATH)/ $(LOCAL_PATH)/src/ $(HOME)/android-ndk-r8b/samples/includes-libusb1.0.3/ $(LOCAL_PATH)/PCSC/ 
LOCAL_LDFLAGS:=-shared
LOCAL_MODULE:=pcscd
LOCAL_LDLIBS:=-llog $(HOME)/android-ndk-r8b/samples/libs-libusb1.0.3/libusb-1.0.so
include $(BUILD_EXECUTABLE)
4

1 に答える 1

8

Android ヘッダーの多くは、標準の場所にはありません。次のコマンドを使用して、不足しているファイルの場所を NDK で検索できますfind . -name fcntl.h。にinclude <sys/fcntl.h>変更する必要があるようinclude <fcntl.h>です。

pthread_cancelAndroid pthread ライブラリには「docs/OVERVIEW.html」が含まれていません。交換するのは難しくありませんpthread_cancel

についてどうすればよいかわかりませんmqueue

于 2012-09-12T13:28:58.133 に答える