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)
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)
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
Re: PostgreSQL C++ Interface version 14.9 using static library instead of shared library
From
Tom Lane
Date:
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:
HiWhile 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.ThanksTarkeshwar
Cordiali saluti
Dott. Giovanni Biscontini
Software Developer & Database Architect
Strada Ponte Alto Sud, 74
41123 Modena (MO)
Tel.: 059.452094
_________________________________________________________________
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.