On Sun, 2020-03-22 at 17:36 +0100, ASSI wrote: > ASSI writes: > > I see the same thing. I have no idea why the linker doesn't pick up the > > reference, but it produces exactly the same error when removing > > "-lcairo" from the link list, which looks suspicious. > > Indeed if I replace that library reference with "-l:libcairo.dll.a" then > things work. The other cairo-dependent modules seem to have the same > problem. Could anybody with some more knowledge of binutils than me > explain why that happens and how to fix it?
Case sensitivity. The modules depend on symbols both from other dependent modules as well as the C libraries which they bind. While for many of the libraries these names are slightly different, e.g. -lPango and -lpango-1.0, in the case of Cairo, the only difference is case (-lCairo -lcairo). FWIW I always ran Cygwin with case sensitivity on (except when Windows upgrades forcibly disabled that behind my back), as these issues are not infrequent particularly when building. ExtUtils::Depends used to use full paths for the module imports, e.g. /usr/lib/perl5/..../libPango.dll.a instead of -L/usr/lib/perl5/.... -lPango, but I guess that changed at some point. If building with case sensitivity enabled is not an option, then I suggest patching EU::D to use full paths for module imports again. HTH, -- Yaakov