Search Postgresql Archives

Re: Statically linking against libpq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Looks to me like you have to add -lkrb5 and -lssl to your compile flags
as well. Perhaps some more others (you can use nm in conjunction with
grep to find which libraries define the missing symbols (On OpenBSD
like so: 'cd /usr/lib && nm -o * | grep krb5_free_context' but that
might differ on Fedora Core 3).

Regards,
Daniel

Citing Matthew Metnetsky <met@xxxxxxxxxxxxx>:
> On Mon, 2005-01-17 at 14:10 -0500, Matthew Metnetsky wrote:
> > 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.
[snipped]
> /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
> 



---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux