This is the mail archive of the
mailing list for the Cygwin project.
Re: Cannot compile UUID module
>> So my next question is: Do you know what parameters are needed so that
>> Makefile will be created with the right settings (without manually
>> executing g++ after the crashed first make)?
>> Because creating it with:
>> perl Makefile.PL LIBS=-L/usr/lib/e2fsprogs
> I would have tried LIBS='-L/usr/lib/e2fsprogs -luuid'.
>> At the beginning I can even see:
>> MakeMaker ARGV: (q[LIBS=-L/usr/lib/e2fsprogs])
>> # LIBS => [q[-luuid]]
> Note that this line is commented out. From past threads it seems that
> MakeMaker does not pass-thru -l arguments specified by the module author
> to the generated Makefile that it cannot find in the default library
> search directories. The fact that libuuid.a is in a non-default
> location (requiring an -L to locate it) on Cygwin seems to trip it up
> and cause -luuid to be omitted. But I would have suspected that with
> -L/usr/lib/e2fsprogs specified in a LDFLAGS override that MakeMaker
> would have added the directory to its list of search directories and let
> the option through. This is just speculation, having not tried it
> myself I don't know the real cause.
> Another commonly seen scenario is that the author of the module only
> tested it on systems where specifying the arguments with an incorrect
> order is tolerated. When this happens the Makefile itself can be
> incorrect with no way to fix it but patching it to use the right order.
>> And by the way, in the PostgreSQL posts dllwrap was used with
>> -Wl,-Bstatic,-luuid,-Bdynamic so when do I need the -Bstatic, -Bdynamic
>> and should I use it too?
> Anything advocating the use of dllwrap should be highly suspect as old
> and inaccurate. It should not be needed in any modern workflow.
> -Bstatic is useful when you have both a shared and a static version of
> the same library and you want to prefer the static version, since the
> default is to prefer the shared. That is why you see it used in pairs,
> switching to static for one -l option and then back to shared so that no
> options found later on the command line are affected.
> On Cygwin this means if you had both an import library libuuid.dll.a and
> a static library libuuid.a, you would need to use -Wl,-Bstatic to make
> the linker use the static version when resolving -luuid instead of the
> import library. However, in this case again the advice is highly
> suspect because there is no shared version of the uuid library in the
> e2fsprogs package, only a static one, so specifying -Bstatic is
> extraneous and useless.
Thank you for your detailed response!
As i had to execute g++ independent I don't know if adding
-L/usr/lib/e2fsprogs to the LDFLAGS would work because of the problem with
the missing -luuid option.
But when I specify perl Makefile.PL with LIBS='-L/usr/lib/e2fsprogs
-luuid' the e2fsprogs option is used, but just appended at the end of the
line, which is (as we/I know now) not working for the -luuid option.. .
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html