1# libfuse 2 3仓库包含第三方开源软件libfuse,libfuse是FUSE(用户态文件系统)框架的用户态程序接口。libfuse提供挂载、卸载文件系统、解析和传递内核的请求接口等功能。在OpenHarmony中,开发者可以通过注册回调函数的形式,实现特定的用户态文件系统功能,例如cloudfiledaemon(云端文件系统服务)等。 4 5## 目录结构 6 7``` 8doc/ 文档 9example/ 样例代码 10include/ libfuse库头文件 11lib/ libfuse库源代码 12test/ 测试脚本代码 13util/ fusermount等二进制工具 14README README说明 15``` 16 17## OpenHarmony如何使用libfuse 18 19OpenHarmony只编译使用libfuse仓库中lib/和include/目录下的源代码和头文件。libfuse作为cloudfiledaemon的依赖模块,来实现具体的云端文件系统功能。 20 21## OpenHarmony如何集成libfuse 22 23libfuse编译为动态链接库,打包到system分区镜像中。 24 25### 1. libfuse的编译 26 27libfuse的编译入口在其根目录下的BUILD.gn中。简单示意如下: 28 29``` 30libfuse_source = [ 31 "//third_party/libfuse/lib/fuse.c", 32 "//third_party/libfuse/lib/fuse_loop.c", 33 "//third_party/libfuse/lib/fuse_loop_mt.c", 34 "//third_party/libfuse/lib/fuse_lowlevel.c", 35 "//third_party/libfuse/lib/fuse_opt.c", 36 "//third_party/libfuse/lib/fuse_signals.c", 37 "//third_party/libfuse/lib/buffer.c", 38 "//third_party/libfuse/lib/compat.c", 39 "//third_party/libfuse/lib/cuse_lowlevel.c", 40 "//third_party/libfuse/lib/helper.c", 41 "//third_party/libfuse/lib/modules/subdir.c", 42 "//third_party/libfuse/lib/mount_util.c", 43 "//third_party/libfuse/lib/fuse_log.c", 44 "//third_party/libfuse/lib/mount.c", 45 "//third_party/libfuse/lib/modules/iconv.c", 46] 47 48ohos_shared_library("libfuse") { 49 configs = [ ":libfuse_config" ] 50 sources = libfuse_source 51 ldflags = [ 52 "-ldl", 53 "-Wl,--version-script", 54 rebase_path("//third_party/libfuse/lib/fuse_versionscript", root_build_dir), 55 "-Wl,-soname,libfuse3.so.3", 56 "-Wl,--no-undefined", 57 "-Wl,--as-needed", 58 "-shared", 59 "-fPIC", 60 ] 61 external_deps = [ "c_utils:utils" ] 62 subsystem_name = "thirdparty" 63 part_name = "libfuse" 64 output_name = "libfuse" 65 install_enable = true 66 install_images = [ "system" ] 67} 68 69``` 70 71### 2. 使用libfuse 72 73在需要使用libfuse的模块构建配置中,增加对应依赖,示例如下: 74 75``` 76ohos_shared_library("cloudfiledaemon") { 77 78 sources = [ 79 ...... 80 ] 81 82 include_dirs = [ 83 ...... 84 "//third_party/libfuse/include", 85 "//third_party/libfuse/lib", 86 ] 87 88 external_deps = [ 89 "//third_party/libfuse:libfuse", 90 ] 91 92... 93} 94``` 95 96## libfuse相关内容 97 98[libfuse主页](https://github.com/libfuse/libfuse) 99[libfuse文档](https://libfuse.github.io/doxygen/index.html) 100 101## License 102 103- include/ 和 lib/ 目录下的源文件,使用LGPL2.1协议; 104- 其他源文件,使用GPL2协议。 105 106## 风险提示 107 108**libfuse是LGPLV2和GPLV2协议类型的三方开源软件,OpenHarmony当前仅使用LGPLV2部分。使用时需履行相应的开源义务。** 109