[FFmpeg-user] Configure error with fontconfig
Jim Worrall
coniophora at gmail.com
Wed May 1 01:27:46 EEST 2024
> On Apr 30, 2024, at 13:53, Jim Worrall <coniophora at gmail.com> wrote:
>
>
>
>> On Apr 30, 2024, at 11:29, Jim Worrall <coniophora at gmail.com> wrote:
>>
>>
>>
>>> On Apr 30, 2024, at 09:41, Jim Worrall <coniophora at gmail.com> wrote:
>>>
>>>
>>>
>>>> On Apr 29, 2024, at 23:00, Ferdi Scholten <ferdi at sttc-nlp.nl> wrote:
>>>>
>>>> This may not be due to ffmpeg itself, but I would appreciate some help.
>>>>> Configure says that pkg-config can’t find fontconfig.pc, but it seems to be
>>>>> in the PKG_CONFIG_PATH.
>>>>>
>>>>> # ./configure --cc=/usr/bin/gcc \
>>>>> --prefix=$TARGET \
>>>>> --pkg-config-flags="--static" \
>>>>> --extra-cflags="-I/usr/local/include" \
>>>>> --extra-ldflags="-L/usr/local/lib" \
>>>>> --extra-libs="-lpthread -ldl -lstdc++" \
>>>>> --enable-static --disable-shared \
>>>>> --enable-nonfree --enable-gpl --enable-version3 \
>>>>> --enable-libfribidi --enable-libfreetype --enable-libfontconfig \
>>>>> --enable-libfdk-aac --enable-libx264 --enable-libx265 --disable-lzma
>>>>> ERROR: fontconfig not found using pkg-config
>>>>>
>>>>> ffbuild/config.log:
>>>>> . . .
>>>>> require_pkg_config libfontconfig fontconfig fontconfig/fontconfig.h FcInit
>>>>> check_pkg_config libfontconfig fontconfig fontconfig/fontconfig.h FcInit
>>>>> test_pkg_config libfontconfig fontconfig fontconfig/fontconfig.h FcInit
>>>>> pkg-config --exists --print-errors fontconfig
>>>>> Package fontconfig was not found in the pkg-config search path.
>>>>> Perhaps you should add the directory containing `fontconfig.pc'
>>>>> to the PKG_CONFIG_PATH environment variable
>>>>> Package 'fontconfig', required by 'virtual:world', not found
>>>>> ERROR: fontconfig not found using pkg-config
>>>>>
>>>>> Here is fontconfig.pc:
>>>>> # ll /usr/local/ffmpeg/packages/pkg-config/check/gtk/
>>>>> total 224K
>>>>> drwxr-xr-x 2 root root 28 Apr 28 11:14 ./
>>>>> drwxr-xr-x 7 root root 72 Apr 28 11:14 ../
>>>>> -rw-r--r-- 1 root root 232 Apr 28 11:14 atk.pc
>>>>> -rw-r--r-- 1 root root 287 Apr 28 11:14 cairo-gobject.pc
>>>>> -rw-r--r-- 1 root root 388 Apr 28 11:14 cairo.pc
>>>>> -rw-r--r-- 1 root root 269 Apr 28 11:14 fontconfig.pc
>>>>>
>>>>> The last path in PKG_CONFIG_PATH contains fontconfig.pc:
>>>>>
>>>>> # echo $PKG_CONFIG_PATH
>>>>> /lib:/usr/lib:usr/local:/usr/local/lib:/usr/local/lib/pkgconfig:
>>>>> /usr/libdata/pkgconfig:/usr/local/libdata/:/usr/local/libdata/pkgconfig:
>>>>> /usr/local/ffmpeg/target/lib:/usr/local/ffmpeg/target/lib/pkgconfig:
>>>>> /usr/local/ffmpeg/target/share/pkgconfig:
>>>>> /usr/local/ffmpeg/build/pkg-config/check/gtk/
>>>>> _______________________________________________
>>>>
>>>> Most likely the fontconfig package on your system is a shared library, it is not distributed as a static library. It therefor cannot be used in a static build with --disable-shared.
>>>>
>>>>
>>>> Try building ffmpeg with shared libraries if you need fontconfig.
>>>
>>> Thank you. Before changing all the ffmpeg dependencies to shared libraries,
>>> I tried making a static fontconfig. I removed the packaged fontconfig parts
>>> and built my own static fontconfig, but got the same “fontconfig not found" error.
>>> There is no .so file on the system with *fontconfig* in its name.
>>>
>>> The relevant files may be:
>>> /usr/local/ffmpeg/target/include/fontconfig/fontconfig.h
>>> /usr/local/ffmpeg/target/lib/libfontconfig.la <http://libfontconfig.la/>
>>> /usr/local/ffmpeg/target/lib/pkgconfig/fontconfig.pc
>>> /usr/local/ffmpeg/target/lib/libfontconfig.a
>>>
>>>
>>>
>>> fontconfig.pc contains:
>>> # cat /usr/local/ffmpeg/target/lib/pkgconfig/fontconfig.pc
>>> prefix=/usr/local/ffmpeg/target
>>> exec_prefix=${prefix}
>>> libdir=${exec_prefix}/lib
>>> includedir=${prefix}/include
>>> sysconfdir=${prefix}/etc
>>> localstatedir=${prefix}/var
>>> PACKAGE=fontconfig
>>> confdir=${sysconfdir}/fonts
>>> cachedir=${localstatedir}/cache/${PACKAGE}
>>>
>>> Name: Fontconfig
>>> Description: Font configuration and customization library
>>> Version: 2.15.0
>>> Requires: freetype2 >= 21.0.15
>>> Requires.private: libxml-2.0 >= 2.6
>>> Libs: -L${libdir} -lfontconfig
>>> Libs.private:
>>> Cflags: -I${includedir}
>>>
>>> fontconfig.pc seems to be pointing to the right places (except sysconfdir=${prefix}/etc doesn’t exist; I don’t know what it would be looking for there). I’m perplexed.
>>
>> Small error; ${prefix}/etc DOES exist. It contains a fonts directory.
>>
>
> Many times the problem seems to actually be not finding lzma.
> But I have --disable-lzma in my configure command.
> Here’s the end of config.log this time:
> . . .
> brotlicommon -lxml2 -licui18n -licuuc -licudata -lz -llzma -lm
> /usr/bin/ld: cannot find -llzma: No such file or directory
> collect2: error: ld returned 1 exit status
> ERROR: fontconfig not found using pkg-config
>
Problem solved, although a bit confusing. It seems there
may have been two problems. After I provided a static fontconfig,
it still complained that it couldn’t find fontconfig. But really it was
lzma. When I built a static lzma (actually xz, which also produces lzma),
the build worked fine.
So it seems the —disable-lzma option doesn’t work; it still
tries to incorporate lzma. But I don’t really understand it.
More information about the ffmpeg-user
mailing list