• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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