[PATCH] build: support building static library
Gao Xiang
hsiangkao at linux.alibaba.com
Thu Jun 6 12:22:06 AEST 2024
Hi,
On 2024/6/6 10:13, Chen Linxuan wrote:
> Hi Xiang!
>
> On 2024/5/23 16:05, Gao Xiang wrote:
>> Hi Comix!
>>
>> On 2024/5/23 15:31, ComixHe wrote:
>>> In some cases, developer may need to integrate erofs-utils into their
>>> proejct as a static library to reduce package dependencies and
>>> have more finer control over the feature used by the project.
>>
>> Thanks for sharing this.
>>
>>>
>>> For exapmle, squashfuse provides a static library `libsquashfuse.a` and
>
> We want a static library for running fuse-erofs, maybe liberofsfuse or something like that, to make a appimage like bundle with erofs.
>
> For quite a long time, Appimage guys patch the fuse program of squashfs to get such a static library, and this patch is accepted by Debian.
>
> https://github.com/AppImageCommunity/libappimage/blob/master/src/patches/squashfuse.patch
>
> https://salsa.debian.org/sgmoore/squashfuse/-/commit/489b04eb7f5e45478f2ba5cd8d7173bb96
>
> The patch just make a binary to be a static library by changing `main` to `fusefs_main`.
>
Since squashfs don't have any offical libsquashfs, so I guess they tried
export the squashfuse project as a library.
But erofs-utils is quite another story since we already have an offical
`liberofs` concept. If you'd like to export some FUSE interface, would
you mind moving some logic in fuse/ to lib/? Does this way also work
for you?
Thanks,
Gao Xiang
> We just want to do the same thing appimage guys do to squashfs.
>
>>> exposes some useful functions, Appimage uses this static library to build
>>> image. It could ensure that the executable image can be executed directly
>>> on most linux platforms and the user doesn't need to install squashfuse
>>> in order to execute the image.
>>>
>>> Signed-off-by: ComixHe <heyuming at deepin.org>
>>> ---
>>> configure.ac | 28 ++++++++++++++++++++++++++++
>>> dump/Makefile.am | 10 ++++++++++
>>> fsck/Makefile.am | 10 ++++++++++
>>> fuse/Makefile.am | 10 ++++++++++
>>> mkfs/Makefile.am | 10 ++++++++++
>>> 5 files changed, 68 insertions(+)
>>>
>>> diff --git a/configure.ac b/configure.ac
>>> index 1989bca..16ddb7c 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -147,6 +147,30 @@ AC_ARG_ENABLE(fuse,
>>> [AS_HELP_STRING([--enable-fuse], [enable erofsfuse @<:@default=no@:>@])],
>>> [enable_fuse="$enableval"], [enable_fuse="no"])
>>> +AC_ARG_ENABLE([static-fuse],
>>> + [AS_HELP_STRING([--enable-static-fuse],
>>> + [build erofsfuse as a static library @<:@default=no@:>@])],
>>> + [enable_static_fuse="$enableval"],
>>> + [enable_static_fuse="no"])
>>> +
>>> +AC_ARG_ENABLE([static-dump],
>>> + [AS_HELP_STRING([--enable-static-dump],
>>> + [build dump.erofs as a static library @<:@default=no@:>@])],
>>> + [enable_static_dump="$enableval"],
>>> + [enable_static_dump="no"])
>>> +
>>> +AC_ARG_ENABLE([static-mkfs],
>>> + [AS_HELP_STRING([--enable-static-mkfs],
>>> + [build mkfs.erofs as a static library @<:@default=no@:>@])],
>>> + [enable_static_mkfs="$enableval"],
>>> + [enable_static_mkfs="no"])
>>> +
>>> +AC_ARG_ENABLE([static-fsck],
>>> + [AS_HELP_STRING([--enable-static-fsck],
>>> + [build fsck.erofs as a static library @<:@default=no@:>@])],
>>> + [enable_static_fsck="$enableval"],
>>> + [enable_static_fsck="no"])
>>
>> But how could we support static libraries from binaries?
>>
>> I guess you need static liberofs instead?
>>
>> Thanks,
>> Gao Xiang
>>
More information about the Linux-erofs
mailing list