Re: Compiling Glib 2.16.5 on strawberry perl

On 2016-07-05 at 06:05:18 +0000, RAPPAZ Francois wrote:
Hi Zaki

Thanks for the proposal. The perl you are using is installed by MSYS2, is it ? 

I'm using strawberry perl. And unfortunately libwinpthread-1.dll in strawberry is not compatible with the 
one in msys64/mingw32.

Yes, the Perl and libgtk I am using are built by the MSYS2 project.

I do eventually plan on putting out similar scripts so that Strawberry
Perl can use MSYS2/MinGW64 libgtk, but that will come later down the
road when I work out the specifics for under Strawberry
Perl. I've started working it out on this issue <>,
so I'm hopeful that it will be straightforward.

A naïve question sorry: using perl from MSYS2, can you start a perl script from the "normal" MS cmd.exe 
shell ?

Yes, I can. The following works:

    C:\Users\zaki> set PATH=C:\msys64\mingw64\bin;%PATH%
    C:\Users\zaki> perl \msys64\home\zaki\curie\bin\

As long as the `bin\` directory is in the %PATH%, I can access all the
necessary DLLs needed for GTK (libgtk, libglib) and Perl (XS DLLs for,,

The only problem is that when installing the Perl modules (,,, I needed to insert :nosearch into the ExtUtils::MakeMaker LIBS
parameter. Part of my build tools does this automatically
(`EUMMnosearch.{sh,pm}` in <>).

A quick overview of how MSYS2 works is that there are 3 subsystems:

- MSYS2 which is used to run a Unix-like environment that is
  self-contained like Cygwin. Code compiled here depends upon a
  compatibility layer.
- MinGW64 and MinGW32 which are 64-bit and 32-bit subsystems which
  compile DLLs that are native to Windows and can be distributed without
  the MSYS2 system.

When you choose to install things using the `pacman` package manager
that comes with MSYS2, you have to choose which subsystem you want to
target (e.g., there is a Perl for MSYS2, a Perl for MinGW32, and a Perl
for MinGW64). More details are at <>.

- Zaki Mughal


-----Original Message-----
From: Zakariyya Mughal [mailto:zaki mughal gmail com]
Sent: mardi, 5. juillet 2016 07:13
To: RAPPAZ Francois
Cc: "Torsten Schönfeld"; gtk-perl-list gnome org
Subject: Re: Compiling Glib 2.16.5 on strawberry perl

On 2016-06-30 at 07:50:30 +0000, RAPPAZ Francois wrote:
Finally I succeed to compile this Gtk stuff.

The important thing is to change the prefix line in the pc files in
gtk+\lib\pkgconfig with prefix=${pcfiledir}/../..

The pc file to choose is the one corresponding to the first library
being searched in the  perl step for a given package.

Once this change is done, there is still the need to indicate where
all the header files are using INC="-Ipath/to/file -I..."
but LIBS="..." is not needed.

With that the compiling + linking goes without undefined reference

Two remarks:
- why did nobody ever told me that on this list ? Did no one try to
compile this stuff on windows ?
- wxWidget is also based on external libs. It is set up in two steps
Alien::wxWidget + Wx and it's much, much, easier to install.

I have been compiling Gtk3 Perl packages using MSYS2 and find it much
easier to do consistently.

Would you be interested in a set of scripts that you can use on your
machines or on Appveyor? To give an example of what I was able to
accomplish, see the build artifact at

That is a ZIP file that contains Perl, GTK+3, GTK themes, etc. along
with a PAR::Packer-based executable that starts the application (a PDF
reader based on MuPDF). I hope to take this and build an MSI installer
with it soon.

- Zaki Mughal


-----Original Message-----
From: gtk-perl-list [mailto:gtk-perl-list-bounces gnome org] On
Behalf Of "Torsten Schönfeld"
Sent: mercredi, 29. juin 2016 11:39
To: gtk-perl-list gnome org
Subject: Re: Compiling Glib 2.16.5 on strawberry perl

"RAPPAZ Francois" <francois rappaz unifr ch>:
pkg-config --libs glib-2.0
-Lc:/devel/target/0ca5583385db1135a53cf9e275815b19/lib -lglib-2.0

There's your problem.  You seem to have multiple conflicting
installations: C:/prog/gtk+ vs. C:/devel, and maybe others.  I
suggest cleaning this up, or at least cleaning up your PATH and
PKG_CONFIG_PATH environment variables, and trying again.
gtk-perl-list mailing list
gtk-perl-list gnome org
gtk-perl-list mailing list
gtk-perl-list gnome org

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]