[openssl-dev] mingw: pkg-config --libs outputs gdi32 before crypto

Richard Levitte richard at levitte.org
Sat Oct 24 15:41:31 UTC 2015


This is quite odd.  Just for comparison, I tried the same on my laptop
(running Debian):

    : ; pkg-config --static --libs-only-l openssl
    -lssl -ldl -lcrypto -ldl 

My .pc files look like this:

    : ; cat /usr/lib/x86_64-linux-gnu/pkgconfig/openssl.pc
    prefix=/usr
    exec_prefix=${prefix}
    libdir=${exec_prefix}/lib/x86_64-linux-gnu
    includedir=${prefix}/include
    
    Name: OpenSSL
    Description: Secure Sockets Layer and cryptography libraries and tools
    Version: 1.0.2d
    Requires: libssl libcrypto
    : ; cat /usr/lib/x86_64-linux-gnu/pkgconfig/libssl.pc 
    prefix=/usr
    exec_prefix=${prefix}
    libdir=${exec_prefix}/lib/x86_64-linux-gnu
    includedir=${prefix}/include
    
    Name: OpenSSL-libssl
    Description: Secure Sockets Layer and cryptography libraries
    Version: 1.0.2d
    Requires.private: libcrypto
    Libs: -L${libdir} -lssl
    Libs.private: -ldl
    Cflags: -I${includedir} 
    : ; cat /usr/lib/x86_64-linux-gnu/pkgconfig/libcrypto.pc 
    prefix=/usr
    exec_prefix=${prefix}
    libdir=${exec_prefix}/lib/x86_64-linux-gnu
    includedir=${prefix}/include
    
    Name: OpenSSL-libcrypto
    Description: OpenSSL cryptography library
    Version: 1.0.2d
    Requires: 
    Libs: -L${libdir} -lcrypto
    Libs.private: -ldl
    Cflags: -I${includedir} 

As you can see, my '-ldl' is specified the same way as your '-lws2_32
-lgdi32 -lcrypt32' (*).

    : ; pkg-config --version
    0.28

Cheers,
Richard

(*) quite interestingly, really, as libssl doesn't have any direct
dependency with libdl...

In message <5626EAC3.3060202 at yahoo.com> on Tue, 20 Oct 2015 21:30:43 -0400, Ray Satiro <raysatiro at yahoo.com> said:

raysatiro> OpenSSL 1.0.2d static built with mingw32.
raysatiro> 
raysatiro> make clean
raysatiro> perl ./Configure mingw
raysatiro> make depend
raysatiro> make
raysatiro> make check
raysatiro> make install
raysatiro> 
raysatiro> I'm using the pkg-config 0.26 that comes with Strawberry Perl to get
raysatiro> the libs when I want to link to OpenSSL:
raysatiro> 
raysatiro> pkg-config --static --libs-only-l openssl
raysatiro> -lssl -lws2_32 -lgdi32 -lcrypt32 -lcrypto
raysatiro> 
raysatiro> I see errors related to the order:
raysatiro> libcrypto.a(rand_win.o):rand_win.c:(.text+0xeab): undefined reference
raysatiro> to `_GetDeviceCaps at 8'
raysatiro> 
raysatiro> I'd expect gdi32 after crypto. The pc files generated by OpenSSL
raysatiro> appear to do that but that's not the output pkg-config gives me. I'm
raysatiro> not sure if this is an OpenSSL issue or a pkg-config issue. Is anyone
raysatiro> else using pkg-config successfully in this configuration?
raysatiro> 
raysatiro> Briefly:
raysatiro> 
raysatiro> openssl.pc
raysatiro> ----------
raysatiro> Name: OpenSSL
raysatiro> Description: Secure Sockets Layer and cryptography libraries and tools
raysatiro> Version: 1.0.2d
raysatiro> Requires: libssl libcrypto
raysatiro> 
raysatiro> 
raysatiro> libcrypto.pc
raysatiro> ------------
raysatiro> Name: OpenSSL-libcrypto
raysatiro> Description: OpenSSL cryptography library
raysatiro> Version: 1.0.2d
raysatiro> Requires:
raysatiro> Libs: -L${libdir} -lcrypto
raysatiro> Libs.private: -lws2_32 -lgdi32 -lcrypt32
raysatiro> Cflags: -I${includedir}
raysatiro> 
raysatiro> 
raysatiro> libssl.pc
raysatiro> ---------
raysatiro> Name: OpenSSL-libssl
raysatiro> Description: Secure Sockets Layer and cryptography libraries
raysatiro> Version: 1.0.2d
raysatiro> Requires.private: libcrypto
raysatiro> Libs: -L${libdir} -lssl
raysatiro> Libs.private: -lws2_32 -lgdi32 -lcrypt32
raysatiro> Cflags: -I${includedir}


More information about the openssl-dev mailing list