Re: Statically linking against libpq

From: Richard_D_Levine(at)raytheon(dot)com
To: Matthew Metnetsky <met(at)uberstats(dot)com>
Cc: Pgsql-General <pgsql-general(at)postgresql(dot)org>, pgsql-general-owner(at)postgresql(dot)org
Subject: Re: Statically linking against libpq
Date: 2005-01-17 20:48:56
Message-ID: OFC7A4ABCB.4DC1E1E7-ON05256F8C.0071F723@ftw.us.ray.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Did you add the path to where the libpq lives to your LD_LIBRARY_PATH? I
haven't tried this, but that may be the problem. Alternatively you can add
the path to the link command using -L (I think.)

e.g. on my machine

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib

or

gcc -L/usr/local/pgsql/lib ...

Rick


Matthew Metnetsky
<met(at)uberstats(dot)com> To: Pgsql-General <pgsql-general(at)postgresql(dot)org>
Sent by: cc:
pgsql-general-owner(at)pos Subject: Re: [GENERAL] Statically linking against libpq
tgresql.org


01/17/2005 03:04 PM

On Mon, 2005-01-17 at 14:10 -0500, Matthew Metnetsky wrote:
> I'll start off by saying that I am a compiling novice, so bear with me
> please.
>
> I have a library which is being plugged into a game server to provide
> extra functionality. The library is currently linked against libpq like
> so `gcc -shared -lpq`. It compiles and runs great as long as people
> have libpg installed. I'm trying to find a way to remove this
> dependency so I googled around and found that `-shared` needed to be `-
> static` and to add `-lcrypt` also. However, the linker is now failing
> and tossing me lots of "undefined reference" messages to things like
> "krb5_free_context" (I've attached the full log).
>
> I'd appreciate any suggestions on getting a statically linked library
> against libpq. I'm currently compiling on a Fedora Core 3 machine with
> gcc-2.95.3 against the postgresql-libs-7.4.6-1.FC3.2 package.
>
> Thanks in advace,
>
> ~ Matthew

Forgot the attachment.... here it is inline.
=========================================================================

/usr/local/gcc-2.95.3/bin/gcc -static -ggdb3 -Wall -Wno-unknown-pragmas
-DOPT_TYPE=\"debugging\" -DCVAR_DEBUG=1 debug.nix/api_info.o
debug.nix/commands_meta.o debug.nix/dllapi.o debug.nix/metamod.o
debug.nix/engine_api.o debug.nix/h_export.o debug.nix/linkent.o
debug.nix/linkgame.o debug.nix/log_meta.o debug.nix/cmn.o
debug.nix/cmn_player.o debug.nix/cmn_usermsg.o debug.nix/cmn_events.o
debug.nix/cmn_team.o debug.nix/osdep.o debug.nix/sdk_util.o
debug.nix/studioapi.o debug.nix/support_meta.o debug.nix/avl.o -o
debug.nix/cmn_i386.so -ldl -lm -lpq -lcryptdebug.nix/metamod.o
(.gnu.linkonce.t.DLOPEN(char const *)+0x21): In function `DLOPEN(char
const *)':
/home/mimetnet/Projects/CMN/hlds-plugin/src/osdep.h:133: warning: Using
'dlopen' in statically linked applications requires at runtime the
shared libraries from the glibc version used for linking
/usr/lib/libpq.a(thread.o)(.text+0x6b): In function `pqGetpwuid':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/thread.c:113: warning:
Using 'getpwuid_r' in statically linked applications requires at runtime
the shared libraries from the glibc version used for linking
/usr/lib/libpq.a(ip.o)(.text+0x9e): In function `getaddrinfo_all':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/ip.c:81: warning: Using
'getaddrinfo' in statically linked applications requires at runtime the
shared libraries from the glibc version used for linking
/usr/lib/crt1.o(.text+0x18): In function `_start':
: undefined reference to `main'
/usr/lib/libpq.a(fe-misc.o)(.text+0x8ae): In function `pqSocketCheck':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-misc.c:973:
undefined reference to `SSL_pending'
/usr/lib/libpq.a(fe-secure.o)(.text+0xd9): In function `load_dh_file':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:575:
undefined reference to `PEM_read_DHparams'
/usr/lib/libpq.a(fe-secure.o)(.text+0xef):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:580:
undefined reference to `DH_size'
/usr/lib/libpq.a(fe-secure.o)(.text+0x11d):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:586:
undefined reference to `DH_check'
/usr/lib/libpq.a(fe-secure.o)(.text+0x15e): In function
`load_dh_buffer':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:611:
undefined reference to `BIO_new_mem_buf'
/usr/lib/libpq.a(fe-secure.o)(.text+0x186):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:614:
undefined reference to `PEM_read_bio_DHparams'
/usr/lib/libpq.a(fe-secure.o)(.text+0x190):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:615:
undefined reference to `BIO_free'
/usr/lib/libpq.a(fe-secure.o)(.text+0x1e7): In function `tmp_dh_cb':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:684:
undefined reference to `DH_size'
/usr/lib/libpq.a(fe-secure.o)(.text+0x20e):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:685:
undefined reference to `DH_generate_parameters'
/usr/lib/libpq.a(fe-secure.o)(.text+0x362): In function
`pqsecure_destroy':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:883:
undefined reference to `SSL_CTX_free'
/usr/lib/libpq.a(fe-secure.o)(.text+0x3aa): In function `close_SSL':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:1003:
undefined reference to `SSL_shutdown'
/usr/lib/libpq.a(fe-secure.o)(.text+0x3b8):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:1004:
undefined reference to `SSL_free'
/usr/lib/libpq.a(fe-secure.o)(.text+0x3d4):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:1010:
undefined reference to `X509_free'
/usr/lib/libpq.a(fe-secure.o)(.text+0x415): In function `SSLerrmessage':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:1029:
undefined reference to `ERR_get_error'
/usr/lib/libpq.a(fe-secure.o)(.text+0x430):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:1032:
undefined reference to `ERR_reason_error_string'
/usr/lib/libpq.a(fe-secure.o)(.text+0x4b0): In function
`pqsecure_write':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:357:
undefined reference to `SSL_write'
/usr/lib/libpq.a(fe-secure.o)(.text+0x4c7):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:358:
undefined reference to `SSL_get_error'
/usr/lib/libpq.a(fe-secure.o)(.text+0x67c): In function `pqsecure_read':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:284:
undefined reference to `SSL_read'
/usr/lib/libpq.a(fe-secure.o)(.text+0x690):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:285:
undefined reference to `SSL_get_error'
/usr/lib/libpq.a(fe-secure.o)(.text+0x81b): In function
`pqsecure_open_client':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:241:
undefined reference to `SSL_new'
/usr/lib/libpq.a(fe-secure.o)(.text+0x839):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:241:
undefined reference to `SSL_set_ex_data'
/usr/lib/libpq.a(fe-secure.o)(.text+0x861):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:241:
undefined reference to `SSL_set_fd'
/usr/lib/libpq.a(fe-secure.o)(.text+0x873):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:896:
undefined reference to `SSL_connect'
/usr/lib/libpq.a(fe-secure.o)(.text+0x88b):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:956:
undefined reference to `SSL_get_peer_certificate'
/usr/lib/libpq.a(fe-secure.o)(.text+0x8dc):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:966:
undefined reference to `X509_get_subject_name'
/usr/lib/libpq.a(fe-secure.o)(.text+0x8f6):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:966:
undefined reference to `X509_NAME_oneline'
/usr/lib/libpq.a(fe-secure.o)(.text+0x90b):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:970:
undefined reference to `X509_get_subject_name'
/usr/lib/libpq.a(fe-secure.o)(.text+0x92d):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:970:
undefined reference to `X509_NAME_get_text_by_NID'
/usr/lib/libpq.a(fe-secure.o)(.text+0x956):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:899:
undefined reference to `SSL_get_error'
/usr/lib/libpq.a(fe-secure.o)(.text+0xa27): In function
`pqsecure_initialize':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:821:
undefined reference to `SSL_library_init'
/usr/lib/libpq.a(fe-secure.o)(.text+0xa2c):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:822:
undefined reference to `SSL_load_error_strings'
/usr/lib/libpq.a(fe-secure.o)(.text+0xa31):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:823:
undefined reference to `TLSv1_method'
/usr/lib/libpq.a(fe-secure.o)(.text+0xa39):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:823:
undefined reference to `SSL_CTX_new'
/usr/lib/libpq.a(fe-secure.o)(.text+0xae7):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:851:
undefined reference to `SSL_CTX_load_verify_locations'
/usr/lib/libpq.a(fe-secure.o)(.text+0xb0f):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:860:
undefined reference to `SSL_CTX_set_verify'
/usr/lib/libpq.a(fe-secure.o)(.text+0xb25):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:862:
undefined reference to `SSL_CTX_set_verify_depth'
/usr/lib/libpq.a(fe-secure.o)(.text+0xb3d):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:865:
undefined reference to `SSL_CTX_set_tmp_dh_callback'
/usr/lib/libpq.a(fe-secure.o)(.text+0xb63):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:866:
undefined reference to `SSL_CTX_ctrl'
/usr/lib/libpq.a(fe-secure.o)(.text+0xc2c): In function
`client_cert_cb':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:710:
undefined reference to `SSL_get_ex_data'
/usr/lib/libpq.a(fe-secure.o)(.text+0xd06):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:734:
undefined reference to `PEM_read_X509'
/usr/lib/libpq.a(fe-secure.o)(.text+0xdb5):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:768:
undefined reference to `X509_free'
/usr/lib/libpq.a(fe-secure.o)(.text+0xdfd):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:752:
undefined reference to `X509_free'
/usr/lib/libpq.a(fe-secure.o)(.text+0xeac):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:779:
undefined reference to `PEM_read_PrivateKey'
/usr/lib/libpq.a(fe-secure.o)(.text+0xed2):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:791:
undefined reference to `X509_check_private_key'
/usr/lib/libpq.a(fe-secure.o)(.text+0xf20):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:796:
undefined reference to `X509_free'
/usr/lib/libpq.a(fe-secure.o)(.text+0xf2d):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:797:
undefined reference to `EVP_PKEY_free'
/usr/lib/libpq.a(fe-secure.o)(.text+0x10bb):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-secure.c:784:
undefined reference to `X509_free'
/usr/lib/libpq.a(fe-auth.o)(.text+0x32): In function `pg_krb5_init':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:291:
undefined reference to `krb5_init_context'
/usr/lib/libpq.a(fe-auth.o)(.text+0x52):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:300:
undefined reference to `krb5_cc_default'
/usr/lib/libpq.a(fe-auth.o)(.text+0x7c):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:310:
undefined reference to `krb5_cc_get_principal'
/usr/lib/libpq.a(fe-auth.o)(.text+0xa6):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:322:
undefined reference to `krb5_unparse_name'
/usr/lib/libpq.a(fe-auth.o)(.text+0x102):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:294:
undefined reference to `error_message'
/usr/lib/libpq.a(fe-auth.o)(.text+0x132):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:303:
undefined reference to `error_message'
/usr/lib/libpq.a(fe-auth.o)(.text+0x15e):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:330:
undefined reference to `krb5_free_context'
/usr/lib/libpq.a(fe-auth.o)(.text+0x170):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:314:
undefined reference to `error_message'
/usr/lib/libpq.a(fe-auth.o)(.text+0x1a6):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:329:
undefined reference to `krb5_cc_close'
/usr/lib/libpq.a(fe-auth.o)(.text+0x1b0):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:325:
undefined reference to `error_message'
/usr/lib/libpq.a(fe-auth.o)(.text+0x1e6):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:328:
undefined reference to `krb5_free_principal'
/usr/lib/libpq.a(fe-auth.o)(.text+0x3a3): In function `fe_sendauth':
/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:373:
undefined reference to `krb5_sname_to_principal'
/usr/lib/libpq.a(fe-auth.o)(.text+0x450):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:395:
undefined reference to `krb5_free_principal'
/usr/lib/libpq.a(fe-auth.o)(.text+0x477):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:377:
undefined reference to `error_message'
/usr/lib/libpq.a(fe-auth.o)(.text+0x5b9):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:399:
undefined reference to `krb5_sendauth'
/usr/lib/libpq.a(fe-auth.o)(.text+0x5da):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:424:
undefined reference to `error_message'
/usr/lib/libpq.a(fe-auth.o)(.text+0x626):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:434:
undefined reference to `krb5_free_principal'
/usr/lib/libpq.a(fe-auth.o)(.text+0x6b6):/usr/src/build/498045-
i386/BUILD/postgresql-7.4.6/src/interfaces/libpq/fe-auth.c:429:
undefined reference to `krb5_free_error'
collect2: ld returned 1 exit status
make: *** [debug.nix/cmn_i386.so] Error 1

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Browse pgsql-general by date

  From Date Subject
Next Message Tzahi Fadida 2005-01-17 21:00:05 Re: ext3
Previous Message Lonni J Friedman 2005-01-17 20:28:38 Re: ext3