build of erofs-utils 1.8.6 fails with musl libc

Gao Xiang hsiangkao at linux.alibaba.com
Tue May 6 22:38:30 AEST 2025


Hi Milan,

On 2025/5/6 20:11, Milan P. Stanić wrote:
> Hi,
> 
> I'm maintainer of erofs-utils for Alpine linux, distribution which use
> musl libc instead of glibc.
> 
> Building version 1.8.6 gives error:
> ------------------
> Making all in contrib
> make[2]: Entering directory '/home/mps/aports/community/erofs-utils/src/erofs-utils-1.8.6/contrib'
> cc -DHAVE_CONFIG_H -I. -I..   -DNDEBUG -Wall -I../include -Os -fstack-clash-protection -Wformat -Werror=format-security -fno-plt -MT stress-stress.o -MD -MP -MF .deps/stress-stress.Tpo -c -o stress-stress.o `test -f 'stress.c' || echo './'`stress.c
> stress.c: In function '__getdents_f':
> stress.c:274:16: error: implicit declaration of function 'readdir64'; did you mean 'readdir_r'? [-Wimplicit-function-declaration]
>    274 |         while (readdir64(dir) != NULL)
>        |                ^~~~~~~~~
>        |                readdir_r
> stress.c:274:31: warning: comparison between pointer and integer
>    274 |         while (readdir64(dir) != NULL)
>        |                               ^~
> stress.c: In function '__read_f':
> stress.c:431:17: error: implicit declaration of function 'pread64'; did you mean 'pread'? [-Wimplicit-function-declaration]
>    431 |         nread = pread64(fe->fd, buf, len, off);
>        |                 ^~~~~~~
>        |                 pread
> stress.c: In function 'read_f':
> stress.c:480:15: error: implicit declaration of function 'lseek64'; did you mean 'lseek'? [-Wimplicit-function-declaration]
>    480 |         fsz = lseek64(fe->fd, 0, SEEK_END);
>        |               ^~~~~~~
>        |               lseek
> make[2]: *** [Makefile:420: stress-stress.o] Error 1
> make[2]: Leaving directory '/home/mps/aports/community/erofs-utils/src/erofs-utils-1.8.6/contrib'
> make[1]: *** [Makefile:447: all-recursive] Error 1
> make[1]: Leaving directory '/home/mps/aports/community/erofs-utils/src/erofs-utils-1.8.6'
> make: *** [Makefile:379: all] Error 2
>>>> ERROR: erofs-utils: build failed
>>>> erofs-utils: Uninstalling dependencies...
> (1/19) Purging .makedepends-erofs-utils (20250506.063719)
> ------------------
> 
> This is because musl use readdir, pread and lseek instead of readdir64,
> pread64 and lseek64.
> (IMO musl does this properly)
> 
> Natanael Copa <ncopa at alpinelinux.org> created patch with which I build
> erofs-utils successfully. I'm attaching patch to this mail.
> 
> Feel free to contact me if you more information or to try some new
> patches.

Thanks!  I will look into that later and feedback.

Thanks,
Gao Xiang

> 



More information about the Linux-erofs mailing list