ndk-build找不到32位ABI的hidraw.h

时间:2016-03-09 12:13:12

标签: android android-ndk

我正在尝试构建一个本机应用程序,以便通过hidraw与设备进行通信。

在尝试通过ndk-build构建应用时,我收到以下错误:

jni/daemon.c:15:26: fatal error: linux/hidraw.h: No such file or directory
 #include <linux/hidraw.h>
                      ^
compilation terminated.
make: *** [obj/local/armeabi-v7a/objs/hidrawdaemon/daemon.o] Error 1

现在,我检查了其他ABI,我发现所有32位ABI(armeabi-v7a armeabi x86 mips)的构建失败,但所有64位ABI(arm64-v8a x86_64 mips64)成功

我还检查了我的ndk(r10e)包含所有可用平台的hidraw.h:

gps@gps-HP-ProBook-4540s:~/Android/android-ndk-r10e/platforms/android-21$ ls
arch-arm  arch-arm64  arch-mips  arch-mips64  arch-x86  arch-x86_64
gps@gps-HP-ProBook-4540s:~/Android/android-ndk-r10e/platforms/android-21$ find . -name hidraw*
./arch-x86_64/usr/include/linux/hidraw.h
./arch-arm/usr/include/linux/hidraw.h
./arch-mips/usr/include/linux/hidraw.h
./arch-mips64/usr/include/linux/hidraw.h
./arch-arm64/usr/include/linux/hidraw.h
./arch-x86/usr/include/linux/hidraw.h
gps@gps-HP-ProBook-4540s:~/Android/android-ndk-r10e/platforms/android-21$ 

任何人都可以指出构建失败的原因,以及如何解决此问题。

1 个答案:

答案 0 :(得分:1)

这似乎是您定位的旧版Android而不是21 - 请检查您在APP_PLATFORM中设置为jni/Application.mk的内容,或AndroidManifest.xml中设置的内容}。

它仅在32位平台上失败的原因是,对于64位平台,android-21是第一个支持它们的版本,所以如果你的目标是在旧版本中,64位部分仍将针对android-21标头和库构建。 (同样,在android-9中添加了x86和mips。)

因此,在这种情况下,由于linux/hidraw.h仅在android-21后可用,因此请确保将其设置为最低平台版本。