[PATCH] build: support building static library

Chen Linxuan me at black-desk.cn
Thu Jun 6 12:13:18 AEST 2024


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`.

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