On Mon, 01 Sep 2014 16:14:52 +0200 Jörg Krause <jkra...@posteo.de> wrote:
> When building against musl instead of glibc, compilation fails at > libavutil/error.c > > CC libavutil/error.o > libavutil/error.c: In function 'av_strerror': > libavutil/error.c:68:9: error: implicit declaration of function > 'strerror_r' [-Werror=implicit-function-declaration] > cc1: some warnings being treated as errors > make: *** [libavutil/error.o] Error 1 > > I tried to find a fix and I am very unsure about the solution. > > I am cross compiling for a linux target. I took a look at > ffmpeg/configure and added the following line: > > # OS specific > case $target_os in > [..] > linux) > add_cppflags -D_POSIX_SOURCE > enable dv1394 > ;; > [..] > > With this I can compile ffmpeg successfully. > > What do you think about this solution? > > Why is #undef _GNU_SOURCE in libavutil/error.c defined? Because there are two strerror_r variants: standard and GNU. They have different semantics (but same signature). I guess this undef is supposed to select the POSIX one? In general, I suspect it might be best to never define _GNU_SOURCE, but _POSIX_C_SOURCE instead. Instead of breaking everything, maybe this would be best to put into error.c: #undef _GNU_SOURCE #define _POSIX_C_SOURCE 200809L _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel