Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Build perl without libgcc_s_sjlj-1 dependency

3 views
Skip to first unread message

sisy...@optusnet.com.au

unread,
Oct 1, 2015, 1:00:05 AM10/1/15
to win32-...@perl.org
Hi,

Is there someone here who can provide info/link to building perl (using
mingw port of gcc) without it being dependent on libgcc_s_sjlj-1.dll,
libstdc++-6.dll ?

(I'm familiar enough with building perl using mingw - I'm just seeking
advice re the mechanism for removing the aforementioned dependencies.)

I provide the following by way of information. Feel free to comment on it.
Also feel free to ignore it.

My mingw-built Math::Float128 ppm package doesn't work correctly with
ActivePerl build 1600 (5.16.0).
Essentially it works fine .... the only problem arises when it comes to
printing out the actual value contained in the Math::Float128 object:

C:\_32>perl -MMath::Float128 -le "$x=Math::Float128->new('2.3');print $x;"
1.28255230868747473742425564582366e-4937

The expected result is:

C:\_32>perl -MMath::Float128 -le "$x=Math::Float128->new('2.3');print $x;"
2.3e+00

I'm thinking this must be some runtime issue, so I've been comparing the dll
files that my mingw-built perl-5.16.0 loads with the dll's that ActivePerl
loads.
I was thinking they must be loading different C runtimes but, alas, the
evidence is that they're loading the very same msvcrt.dll.
They also load the same system dll's.

Only difference I can find is that the mingw build's perl516.dll has
dependencies upon libgcc_s_sjlj-1.dll, libstdc++-6.dll and the system
WS2_32.dll, whereas the AS perl516.dll does not.

I don't know how to remove the WS2_32.dll dependency, but at least I can
start by building a mingw-built perl that doesn't have the dependencies on
the 2 helper dll's.
Then build Math::Float128 using that perl and see if that works any better
with ActivePerl.
Instinctively I feel that it won't make any difference, but I can't think of
anything else to try.

It's quite likely that other versions of ActivePerl (not just 5.16.0) are
affected in the same way, but this is untested.

Cheers,
Rob

sisy...@optusnet.com.au

unread,
Oct 1, 2015, 8:30:02 AM10/1/15
to win32-...@perl.org
-----Original Message-----
From: sisy...@optusnet.com.au
Sent: Thursday, October 01, 2015 2:45 PM
To: win32-...@perl.org
Subject: Build perl without libgcc_s_sjlj-1 dependency

> Is there someone here who can provide info/link to building perl (using
> mingw port of gcc) without it being dependent on libgcc_s_sjlj-1.dll,
> libstdc++-6.dll ?

No matter - I finally (re)found:
http://www.nntp.perl.org/group/perl.win32.vanilla/2014/08/msg579.html
and followed that advice to successfully build a perl-5.16.0 that had no
runtime dependency upon the 2 gcc dll files.

I then used that perl to build Math::Float128, and copied it across to
ActivePerl-5.16.0.

As I expected, it made no difference and ActivePerl is still producing:

C:\_32>perl -MMath::Float128 -le "$x=Math::Float128->new('2.3');print $x;"
1.28255230868747473742425564582366e-4937

At least I've ruled out the possibility that the runtime dependency on the 2
gcc dll's is the cause of the problem.
Must be something else.

This new mingw perl.exe has a runtime dependency on kernel32.dll, whereas
the ActivePerl one doesn't.
And the new mingw perl516.dll has a runtime dependency on ws2_32.dll,
whereas the ActivePerl one doesn't.

Other than that, runtime dependencies are identical, right down to the
actual dll's that are being loaded.

I'll probably raise this on perlmonks (where it's just as off-topic as it is
here) at some stage in the future.

Cheers,
Rob

Robert Eden

unread,
Oct 1, 2015, 1:15:02 PM10/1/15
to win32-...@perl.org
On 9/30/2015 11:45 PM, sisy...@optusnet.com.au wrote:
> Hi,
>
> Is there someone here who can provide info/link to building perl
> (using mingw port of gcc) without it being dependent on
> libgcc_s_sjlj-1.dll, libstdc++-6.dll ?
>
Not sure if this will help you, but I needed a perl without dll
dependencies (similar to activeperl) in order to use Perlpp to make
XMLTV.EXE

I documented the procedure here:
http://wiki.xmltv.org/index.php/XMLTVexeBuild

Robert


sisy...@optusnet.com.au

unread,
Oct 1, 2015, 8:15:03 PM10/1/15
to win32-...@perl.org, Robert Eden


-----Original Message-----
From: Robert Eden
Sent: Friday, October 02, 2015 3:04 AM
To: win32-...@perl.org
Subject: Re: Build perl without libgcc_s_sjlj-1 dependency

> I documented the procedure here:
> http://wiki.xmltv.org/index.php/XMLTVexeBuild

Thanks Robert.
It was your thread that I eventually dug up - though your wiki provides a
more comprehensive presentation, of course.

Does anyone have any comments on "pros and cons" of building perl with these
runtime dependencies versus having them statically linked in ?

Cheers,
Rob

0 new messages