sys / fcntl.h:没有这样的文件,而交叉编译pcsclite为Android?

所有:我正在做一个Android应用程序,可以commonic与Android手机的Ccid智能卡读卡器,我select了这种方式:“pcsc-lite-1.8.5 + ccid-1.4.7 + libusb-1.0.3”在Ubuntu(PC上的Linux操作系统)非常好。 然后我试图将它们移植到android,交叉编译时有很多问题。 这些问题大部分都是Android的Bionic库缺less一些头文件和函数,比如:

  1. sys / fcntl.h,mqueue.h:没有这样的文件;

  2. pthread_cancel:未定义的引用;

而现在,虽然我交叉编译pcsclitebuild立可执行文件“pcscd”,我得到这个错误:

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) 

许多Android头文件不在标准位置。 您可以使用以下命令在NDK中search丢失文件find . -name fcntl.h的位置find . -name fcntl.h find . -name fcntl.h 。 看来include <sys/fcntl.h>需要改为include <fcntl.h>

Android pthread库不包含pthread_cancel请参阅“docs / OVERVIEW.html”。 replacepthread_cancel应该不难。

我不知道如何处理mqueue