Thread: PostgreSQL C++ Interface version 14.9 using static library instead of shared library

PostgreSQL C++ Interface version 14.9 using static library instead of shared library

From
M Tarkeshwar Rao
Date:
Hi
 
While compiling PostgreSQL C++ Interface version 14.9 . Found that libpq.so is getting created with libssl.a and libcrypto.a instead of shared library libssl.so and libcrypto.so.
It is created like below:
user@seli[postgres/14.9/lib]$ ldd libpq.so
        linux-vdso.so.1 (0x00007ffe67fed000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007efcf11b3000)
        libc.so.6 => /lib64/libc.so.6 (0x00007efcf0df8000)
        /lib64/ld-linux-x86-64.so.2 (0x00007efcf1b26000)
However it should use ssl and crypto as shared library like following:
 
Same when we compiled for 14.8, Its ldd out shows following:
user@seli[postgres/14.8/lib]$ ldd libpq.so
        linux-vdso.so.1 (0x00007ffcf715d000)
        libssl.so.3 => /scm/FE/SW_3pp_cm/em21_9/sles/15/openssl/3.1.2/lib64/libssl.so.3 (0x00007f23066f8000)
        libcrypto.so.3 => /scm/FE/SW_3pp_cm/em21_9/sles/15/openssl/3.1.2/lib64/libcrypto.so.3 (0x00007f2305fb3000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2305d94000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f23059d9000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f23057d5000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f2306bee000)
 
Any suggestion and feedback , why it is taking static library instead of shared object ?
Also there is the size difference of libpq.so. in 14.8 it is around 320 kb and in 14.9 it is around 6 mb.
 
Thanks
Tarkeshwar

 
 
 
 
 
M Tarkeshwar Rao <m.tarkeshwar.rao@ericsson.com> writes:
> While compiling PostgreSQL C++ Interface version 14.9 . Found that libpq.so is getting created with libssl.a and
libcrypto.ainstead of shared library libssl.so and libcrypto.so. 

I don't see that happening here ...

$ ldd libpq.so.5.14
        linux-vdso.so.1 (0x00007ffea6b41000)
        libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007fc3be4b1000)
        libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fc3bdfc7000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc3bdda7000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fc3bd9e2000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fc3bd7ca000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fc3bd5c6000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fc3be991000)

$ size libpq.so.5.14
   text    data     bss     dec     hex filename
 295038   12388     480  307906   4b2c2 libpq.so.5.14

It seems likely that there's some oddity in your build environment.
Maybe the libssl.so and libcrypto.so symlinks aren't present?  Or take
a close look at the command that links libpq.so, and see if any odd
switches have crept in.

            regards, tom lane



Re: PostgreSQL C++ Interface version 14.9 using static library instead of shared library

From
Giovanni Biscontini
Date:
Hi, 
  maybe you're not compiling with ssl enabled (using --with-openssl) ?
regards, Giovanni

Il giorno ven 20 ott 2023 alle ore 12:58 M Tarkeshwar Rao <m.tarkeshwar.rao@ericsson.com> ha scritto:
Hi
 
While compiling PostgreSQL C++ Interface version 14.9 . Found that libpq.so is getting created with libssl.a and libcrypto.a instead of shared library libssl.so and libcrypto.so.
It is created like below:
user@seli[postgres/14.9/lib]$ ldd libpq.so
        linux-vdso.so.1 (0x00007ffe67fed000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007efcf11b3000)
        libc.so.6 => /lib64/libc.so.6 (0x00007efcf0df8000)
        /lib64/ld-linux-x86-64.so.2 (0x00007efcf1b26000)
However it should use ssl and crypto as shared library like following:
 
Same when we compiled for 14.8, Its ldd out shows following:
user@seli[postgres/14.8/lib]$ ldd libpq.so
        linux-vdso.so.1 (0x00007ffcf715d000)
        libssl.so.3 => /scm/FE/SW_3pp_cm/em21_9/sles/15/openssl/3.1.2/lib64/libssl.so.3 (0x00007f23066f8000)
        libcrypto.so.3 => /scm/FE/SW_3pp_cm/em21_9/sles/15/openssl/3.1.2/lib64/libcrypto.so.3 (0x00007f2305fb3000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2305d94000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f23059d9000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f23057d5000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f2306bee000)
 
Any suggestion and feedback , why it is taking static library instead of shared object ?
Also there is the size difference of libpq.so. in 14.8 it is around 320 kb and in 14.9 it is around 6 mb.
 
Thanks
Tarkeshwar

 
 
 
 
 


--

Cordiali saluti


Dott. Giovanni Biscontini

Software Developer & Database Architect


Strada Ponte Alto Sud, 74
41123 Modena (MO)
Tel.:   059.452094  
Cell:   3938282174                
Mail:
  biscontini.g@es2000.it 


_________________________________________________________________
Privacy e riservatezza: il presente messaggio, così come i relativi allegati, contengono dati ed informazioni da considerarsi strettamente riservate ed è indirizzato esclusivamente al destinatario sopra indicato, il quale è l'unico autorizzato a trattarlo in osservanza delle norme del Regolamento UE 2016/679 (RGPD). Chiunque ricevesse questo messaggio per errore di evitare di copiarlo, divulgarlo, distribuirlo a terzi e di dare notizia al mittente dell’errato invio, distruggendo poi l'eventuale copia cartacea e la copia in formato elettronico.