Thread: Statically linking against libpq
Hi,
We’re building the postgres odbc driver by ourselves for our customers on Linux. It builds against hence depends on libpq.so. We’re wondering if there is a secret configure flag to statically link against libpq such that the final psqlodbcw.so has less dependencies and in particular doesn’t depend on libpq.so. Also if there is no such config flag yet, are you guys planning to add one? Thank you for your help in advance.
Johnny
On 07/06/2016 11:01 PM, Johnny Yan wrote: > Hi, > > We're building the postgres odbc driver by ourselves for our > customers on Linux. It builds against hence depends on libpq.so. > We're wondering if there is a secret configure flag to statically > link against libpq such that the final psqlodbcw.so has less > dependencies and in particular doesn't depend on libpq.so. There's no such flag, currently. One option is to create a temporary installation of libpq, with just the static library. The linker will use the static library, if it can't find a shared one. Something along the lines of: mkdir static-libpq mkdir static-libpq/lib ln -s `pg_config --libdir`/libpq.a static-libpq/lib/libpq.a ln -s `pg_config --includedir` static-libpq/include ./configure --with-libpq=static-libpq ... Assuming your libpq is built with OpenSSL, though, you'll also need to pass LDFLAGS="-lssl -lcrypto" to make the configure test pass. The resulting ODBC driver will still need libssl and libcrypto as shared libraries, if built that way. There might be a more straightforward way to do that, with suitable linked flags, but I don't know how. > Also if there is no such config flag yet, are you guys planning to > add one? No such plans. If you want to write a patch, and it's not too complicated, I wouldn't mind adding it, thouhg. - Heikki
Cool. That's all I want to know for now. Thank you Heikki. Johnny -----Original Message----- From: Heikki Linnakangas [mailto:hlinnaka@gmail.com] On Behalf Of Heikki Linnakangas Sent: Wednesday, July 06, 2016 2:06 PM To: Johnny Yan <jyan@tableau.com>; pgsql-odbc@postgresql.org Subject: Re: [ODBC] Statically linking against libpq On 07/06/2016 11:01 PM, Johnny Yan wrote: > Hi, > > We're building the postgres odbc driver by ourselves for our customers > on Linux. It builds against hence depends on libpq.so. > We're wondering if there is a secret configure flag to statically link > against libpq such that the final psqlodbcw.so has less dependencies > and in particular doesn't depend on libpq.so. There's no such flag, currently. One option is to create a temporary installation of libpq, with just the static library. The linker will use the static library,if it can't find a shared one. Something along the lines of: mkdir static-libpq mkdir static-libpq/lib ln -s `pg_config --libdir`/libpq.a static-libpq/lib/libpq.a ln -s `pg_config --includedir` static-libpq/include ./configure --with-libpq=static-libpq ... Assuming your libpq is built with OpenSSL, though, you'll also need to pass LDFLAGS="-lssl -lcrypto" to make the configuretest pass. The resulting ODBC driver will still need libssl and libcrypto as shared libraries, if built that way. There might be a more straightforward way to do that, with suitable linked flags, but I don't know how. > Also if there is no such config flag yet, are you guys planning to add > one? No such plans. If you want to write a patch, and it's not too complicated, I wouldn't mind adding it, thouhg. - Heikki