gpt4 book ai didi

android - 'sizeof(off_t) != 8' 在为 android 编译 libfuse 时

转载 作者:搜寻专家 更新时间:2023-11-01 07:45:31 25 4
gpt4 key购买 nike

我正在尝试编译 libfuse使用 NDK,我的环境:

Win10(64位) + NDK(r14b,64位) + libfuse(3.1.0)

fuse_common.h 发生错误,它检查 off_t 的大小:

$ ndk-build
[armeabi-v7a] Compile thumb : fuse <= buffer.c
In file included from jni/../../libfuse/lib/buffer.c:15:
In file included from jni/../../libfuse/lib/fuse_i.h:9:
In file included from jni/../../libfuse/include\fuse.h:19:
jni/../../libfuse/include/fuse_common.h:745:13: error: bit-field
'_fuse_off_t_must_be_64bit' has negative width (-1)
{ unsigned _fuse_off_t_must_be_64bit:((sizeof(off_t) == 8) ? 1 : -1); };
^
1 error generated.
make: *** [obj/local/armeabi-v7a/objs/fuse/__/__/libfuse/lib/buffer.o] Error 1

这是 fuse_common.h 中的检查:

struct _fuse_off_t_must_be_64bit_dummy_struct \
{ unsigned _fuse_off_t_must_be_64bit:((sizeof(off_t) == 8) ? 1 : -1); };

我在谷歌上搜索,有 _FILE_OFFSET_BITS=64 定义,可以用来改变 off_t 的大小,我有这个定义我的 'Android.mk' 文件:

LOCAL_CFLAGS := \
....
-D_FILE_OFFSET_BITS=64 \
....

甚至在 fuse_common.h 的开头添加这一行

#define _FILE_OFFSET_BITS 64

还是不行,怎么解决?

最佳答案

更新到 NDK r15c。 _FILE_OFFSET_BITS=64 从那里开始工作。

请注意,大多数 off64_t 系统调用直到 android-21 才可用。如果您的 minSdkVersion 设置低于该值并且您使用 _FILE_OFFSET_BITS=64,许多功能将不可用。

关于android - 'sizeof(off_t) != 8' 在为 android 编译 libfuse 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45148151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com