This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cannot compile UUID module


>> So my next question is: Do you know what parameters are needed so that
>> the
>> 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.
>
> Brian

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.. .

Alex


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]