On Tue July 19 2011, brandon...@aol.com wrote: > > Okay, it is acting like my /usr/lib/libssl.a is of no value. First, just for > comparison, attempting to link with no reference to libssl at all: > > [root@linux Release]# g++ -o"<My exe name>" <my object file list> > /usr/lib/libcrypto.a /usr/lib/libldap.a /usr/lib/libxml2.a /usr/lib/liblber.a > -lz -ldl -lm -lsasl2 2>&1 > /usr/lib/libldap.a(os-ip.o): In function `ldap_int_poll': > (.text+0x9c4): warning: `sys_errlist' is deprecated; use `strerror' or > `strerror_r' instead > /usr/lib/libldap.a(os-ip.o): In function `ldap_int_poll': > (.text+0x9ba): warning: `sys_nerr' is deprecated; use `strerror' or > `strerror_r' instead > ./LinuxAgent.o: In function `Agent::startCommandProcessor()': > LinuxAgent.cpp:(.text+0x438): undefined reference to `pthread_create' > ./LinuxAgent.o: In function `Agent::Run()': > LinuxAgent.cpp:(.text+0x47b7): undefined reference to `pthread_create' > ./Redirect.o: In function `Redirect::RunRedirect(char*, int, int, char*, int, > int)': > Redirect.cpp:(.text+0x19b): undefined reference to `pthread_create' > ./VncRedirector.o: In function `Redir::RunVNC(char*, int, int)': > VncRedirector.cpp:(.text+0x19b): undefined reference to `pthread_create' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_close': > (.text+0xa6): undefined reference to `SSL_shutdown' > /usr/lib/libldap.a(tls_o.o): In function `tlso_session_upflags': > (.text+0x13b): undefined reference to `SSL_get_error' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_write': > (.text+0x1cc): undefined reference to `SSL_write' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_write': > (.text+0x1df): undefined reference to `SSL_get_error' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_read': > (.text+0x2cc): undefined reference to `SSL_read' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_read': > (.text+0x2df): undefined reference to `SSL_get_error' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_ctrl': > (.text+0x409): undefined reference to `SSL_pending' > ...<more errors>... > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x16e7): undefined reference to `gss_release_buffer' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x177f): undefined reference to `gss_init_sec_context' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x190d): undefined reference to `gss_release_buffer' > collect2: ld returned 1 exit status > > Now, including /usr/lib/libssl.a at the end of the list of object file: > > [root@linux Release]# g++ -o"<My exe name>" <my object file list> > /usr/lib/libcrypto.a /usr/lib/libldap.a /usr/lib/libxml2.a /usr/lib/liblber.a > /usr/lib/libssl.a -lz -ldl -lm -lsasl2 2>&1 > /usr/lib/libldap.a(os-ip.o): In function `ldap_int_poll': > (.text+0x9c4): warning: `sys_errlist' is deprecated; use `strerror' or > `strerror_r' instead > /usr/lib/libldap.a(os-ip.o): In function `ldap_int_poll': > (.text+0x9ba): warning: `sys_nerr' is deprecated; use `strerror' or > `strerror_r' instead > ./LinuxAgent.o: In function `Agent::startCommandProcessor()': > LinuxAgent.cpp:(.text+0x438): undefined reference to `pthread_create' > ./LinuxAgent.o: In function `Agent::Run()': > LinuxAgent.cpp:(.text+0x47b7): undefined reference to `pthread_create' > ./Redirect.o: In function `Redirect::RunRedirect(char*, int, int, char*, int, > int)': > Redirect.cpp:(.text+0x19b): undefined reference to `pthread_create' > ./VncRedirector.o: In function `Redir::RunVNC(char*, int, int)': > VncRedirector.cpp:(.text+0x19b): undefined reference to `pthread_create' > /usr/lib/libldap.a(tls_o.o): In function `tlso_session_chkhost': > (.text+0x8a6): undefined reference to `X509_get_ext_by_NID' > /usr/lib/libldap.a(tls_o.o): In function `tlso_session_chkhost': > (.text+0x8bd): undefined reference to `X509_get_ext' > /usr/lib/libldap.a(tls_o.o): In function `tlso_session_chkhost': > (.text+0x8c5): undefined reference to `X509V3_EXT_d2i' > /usr/lib/libldap.a(tls_o.o): In function `tlso_session_chkhost': > (.text+0x9be): undefined reference to `GENERAL_NAMES_free' > /usr/lib/libldap.a(tls_o.o): In function `tlso_session_chkhost': > (.text+0x9d7): undefined reference to `GENERAL_NAMES_free' > /usr/lib/libldap.a(tls_o.o): In function `tlso_session_chkhost': > (.text+0x9f5): undefined reference to `X509_get_subject_name' > /usr/lib/libldap.a(tls_o.o): In function `tlso_session_chkhost': > (.text+0xa00): undefined reference to `X509_NAME_entry_count' > ...<more errors>... > /usr/lib/libssl.a(s3_both.o): In function `ssl_cert_type': > (.text+0x1e5): undefined reference to `EVP_PKEY_free' > /usr/lib/libssl.a(s3_both.o): In function `ssl3_add_cert_to_buf': > (.text+0x61e): undefined reference to `i2d_X509' > /usr/lib/libssl.a(s3_both.o): In function `ssl3_add_cert_to_buf': > (.text+0x677): undefined reference to `i2d_X509' > /usr/lib/libssl.a(s3_both.o): In function `ssl3_output_cert_chain': > (.text+0x854): undefined reference to `X509_STORE_CTX_init' > /usr/lib/libssl.a(s3_both.o): In function `ssl3_output_cert_chain': > (.text+0x86c): undefined reference to `X509_verify_cert' > /usr/lib/libssl.a(s3_both.o): In function `ssl3_output_cert_chain': > (.text+0x8c9): undefined reference to `X509_STORE_CTX_cleanup' > /usr/lib/libssl.a(s3_both.o): In function `ssl3_output_cert_chain': > (.text+0x972): undefined reference to `X509_STORE_CTX_cleanup' > collect2: ld returned 1 exit status > > Now, including /usr/lib/libssl.a at the beginning of the list of object file: > > [root@linux Release]# g++ -o"<My exe name>" <my object file list> > /usr/lib/libssl.a /usr/lib/libcrypto.a /usr/lib/libldap.a /usr/lib/libxml2.a > /usr/lib/liblber.a -lz -ldl -lm -lsasl2 2>&1 > /usr/lib/libldap.a(os-ip.o): In function `ldap_int_poll': > (.text+0x9c4): warning: `sys_errlist' is deprecated; use `strerror' or > `strerror_r' instead > /usr/lib/libldap.a(os-ip.o): In function `ldap_int_poll': > (.text+0x9ba): warning: `sys_nerr' is deprecated; use `strerror' or > `strerror_r' instead > ./LinuxAgent.o: In function `Agent::startCommandProcessor()': > LinuxAgent.cpp:(.text+0x438): undefined reference to `pthread_create' >
I do not see where you mention the pthread library. See: http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html For examples. Get those to build and you should be able to find your problem. None of this thread is appropriate for the OpenSSL mailing list. Mike > ./LinuxAgent.o: In function `Agent::Run()': > LinuxAgent.cpp:(.text+0x47b7): undefined reference to `pthread_create' > ./Redirect.o: In function `Redirect::RunRedirect(char*, int, int, char*, int, > int)': > Redirect.cpp:(.text+0x19b): undefined reference to `pthread_create' > ./VncRedirector.o: In function `Redir::RunVNC(char*, int, int)': > VncRedirector.cpp:(.text+0x19b): undefined reference to `pthread_create' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_close': > (.text+0xa6): undefined reference to `SSL_shutdown' > /usr/lib/libldap.a(tls_o.o): In function `tlso_session_upflags': > (.text+0x13b): undefined reference to `SSL_get_error' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_write': > (.text+0x1cc): undefined reference to `SSL_write' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_write': > (.text+0x1df): undefined reference to `SSL_get_error' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_read': > (.text+0x2cc): undefined reference to `SSL_read' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_read': > (.text+0x2df): undefined reference to `SSL_get_error' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_ctrl': > (.text+0x409): undefined reference to `SSL_pending' > /usr/lib/libldap.a(tls_o.o): In function `tlso_sb_remove': > (.text+0x4ab): undefined reference to `SSL_free' > ...<more errors>... > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x1178): undefined reference to `gss_release_name' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x1474): undefined reference to `gss_import_name' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x149e): undefined reference to `gss_indicate_mechs' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x1582): undefined reference to `gss_test_oid_set_member' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x1594): undefined reference to `gss_release_oid_set' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x1661): undefined reference to `gss_init_sec_context' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x16e7): undefined reference to `gss_release_buffer' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x177f): undefined reference to `gss_init_sec_context' > /usr/lib/libldap.a(gssapi.o): In function `ldap_gssapi_bind_s': > (.text+0x190d): undefined reference to `gss_release_buffer' > collect2: ld returned 1 exit status > > Now, giving up and allowing it to choose the so version, suddenly everything > works. There are two warnings, but no errors. > > [root@linux Release]# g++ -o"<My exe name>" <my object file list> > /usr/lib/libcrypto.a /usr/lib/libldap.a /usr/lib/libxml2.a /usr/lib/liblber.a > -lz -ldl -lm -lssl -lsasl2 2>&1 > /usr/lib/libldap.a(os-ip.o): In function `ldap_int_poll': > (.text+0x9c4): warning: `sys_errlist' is deprecated; use `strerror' or > `strerror_r' instead > /usr/lib/libldap.a(os-ip.o): In function `ldap_int_poll': > (.text+0x9ba): warning: `sys_nerr' is deprecated; use `strerror' or > `strerror_r' instead > [root@linux Release]# > > > Anyone have an idea why the static version of the library doesn't seem to > work? > > Thanks. > > > Brandon > > > -----Original Message----- > From: Michael S. Zick <open...@morethan.org> > To: openssl-users <openssl-users@openssl.org> > Sent: Tue, Jul 19, 2011 8:27 am > Subject: Re: Trying to Link Statically to Libcrypto > > > On Tue July 19 2011, Albrecht Schlosser wrote: > On 19.07.2011 13:30, Michael S. Zick wrote: > > But a quicker answer to just a symbol or a few: use the toolchain. > > ... > > > Now enter: > > nm /usr/lib/libldap.a > > be rewarded with a listing 1,830 lines long of the symbols defined > > and the external symbols referenced. > > > > Of course, entering: > > nm --help > > will give you the command options, and > > man nm > > will give you all of the sicken details (the manual "man" command is > > your friend on any *nix type system). > > > > But for those readers interested in the "instant answer" - > > > > I'm afraid you got it the wrong way around: > > You are correct, my bad. > The linker makes an internal list of the __required__ symbols and > hen (actually, at the same time) tries to satisfy that list by > he symbols provided in the __following listed__ libraries. > I wrote those directions backwards - a major brain fart on my part. > Very glad you spotted my error. > ike > > > The symbols this library provides (meaning this library is __before__ > > This should read "__after__" ... > > > the users of these symbols in the link command), > > Enter: > > nm --defined /usr/lib/libldap.a > > > > The symbols this library requires (meaning this library is __after__ > > ... and this should read "__before__" . > > > the providers of these symbols in the link command), > > Enter: > > nm --undefined-only /usr/lib/libldap.a > > _____________________________________________________________________ > penSSL Project http://www.openssl.org > ser Support Mailing List openssl-users@openssl.org > utomated List Manager majord...@openssl.org > > ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org