[FFmpeg-user] configure error with enabling libmodplug
Kimio Miyamura
xanadu at apost.plala.or.jp
Thu Sep 11 11:19:06 CEST 2014
> 2014/09/01 4:05PM Clément Bœsch <u at pkh.me <mailto:u at pkh.me>> wrote:
>
> On Mon, Sep 01, 2014 at 03:39:08PM +0900, Kimio Miyamura wrote:
>>
>>> On 2014/09/01, at 2:11PM, Clément Bœsch <u at pkh.me <mailto:u at pkh.me>> wrote:
>>>
>>>> On Mon, Sep 01, 2014 at 10:02:58AM +0900, Kimio Miyamura wrote:
>>>>
>>>> I searched web and found that modification of ffmpeg configure script is required:
>>
>>>> -enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug
>>>> +enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug -lstdc++
>>>>
>>>> or
>>>>
>>>> -enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug
>>>> +enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug -lc++
>>
>>>> I think either of them should be added to ffmpeg compile script. How do you think?
>>
>>> Does -lstdc++ or -lc++ appears in pkg-config --libs libmodplug?
>>
>> $ pkg-config --libs libmodplug
>> -L/Volumes/ffmpeg_compile/lib -lmodplug
>>
>> So either -lstdc++ or -lc++ don't appear in the command output.
>>
>> I checked libmodplug.pc.
>>
>> $ cat /Volumes/ffmpeg_compile/lib/pkgconfig/libmodplug.pc
>> prefix=/Volumes/ffmpeg_compile
>> exec_prefix=${prefix}
>> libdir=${exec_prefix}/lib
>> includedir=${prefix}/include
>>
>> Name: libmodplug
>> Description: The ModPlug mod file playing library.
>> Version: 0.8.8.5
>> Requires:
>> Libs: -L${libdir} -lmodplug
>> Libs.private: -lstdc++ -lm
>> Cflags: -I${includedir}
>>
>> -lstdc++ appears in Libs.private: line. But even though configure with "./configure --pkg-config-flags=--static --enable-libmodplug", the result is same error.
>>
>
> Right, that's because libmodplug wasn't detected through pkg-config, which
> I just fixed in git/master. Can you git pull and retry that latest command
> with --pkg-config-flags=--static?
A information for Windows (MinGW?) user.
With above ffmpeg change, Windows (MinGW?) user encounters libmodplug not found error when configuring ffmpeg with libmodplug-0.8.8.5.
This is because of mod plug.h's MODPLUG_EXPORT macro. The macro is defined as __declspec(dllimport) would be added, without defining MODPLUG_STATIC.
Then, called as `_imp__ModPlug_Load' from ffmpeg configure, and then result in libmodplug not found error. (I'm not Windows user. I'm writing the error mechanism based on one of my friend's comment who using Windows)
The countermeasure is either of bellow 3.
1.Define MODPLUG_STATIC in modplug.h.
2.Add "-DMODPLUG_STATIC" to Cflags: -I${includedir} line in libmodplug.pc.
3.Configure ffmpeg with adding "--extra-cflags=-DMODPLUG_STATIC" option.
My friend told me that ffmpeg's require_pkg_config change in libmodplug is fair. There are some libraries which have to add STATIC definition to build ffmpeg correctly.
So please use either of 3 countermeasure to build ffmpeg with libmodplug support in Windows.
// Miya
More information about the ffmpeg-user
mailing list