You are viewing a plain text version of this content. The canonical link for it is here.
Posted to proton@qpid.apache.org by Keith W <ke...@gmail.com> on 2012/12/12 15:22:55 UTC

Can't build proton-c undefined symbols ERR_get_error etc

Hi all

We are having problems building proton-c on our dev boxes (Red Hat
Enterprise Linux Server release 5.3 (Tikanga)).  I've done a git
bisect and discovered that it was Andrew's commit last Wednesday (rev
1417553) that has introduced/exposed the issue.  Before that point, we
could build without this issue.

It appears to be a link issue with openssl.  The following version of
openssl is installed:

$rpm -q openssl
openssl-0.9.8e-7.el5.x86_64
openssl-0.9.8e-7.el5.i686

Make is failing with the following (complete cmake/make output attached below)

Linking C shared library libqpid-proton.so
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `_log_ssl_error':
openssl.c:(.text+0x2de): undefined reference to `ERR_get_error'
openssl.c:(.text+0x2ff): undefined reference to `ERR_error_string_n'
openssl.c:(.text+0x31c): undefined reference to `ERR_get_error'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `ssl_failed':
openssl.c:(.text+0x43f): undefined reference to `ERR_get_error'
openssl.c:(.text+0x45f): undefined reference to `ERR_error_string_n'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `get_dh2048':
openssl.c:(.text+0x4ac): undefined reference to `DH_new'
openssl.c:(.text+0x4d7): undefined reference to `BN_bin2bn'
openssl.c:(.text+0x4f8): undefined reference to `BN_bin2bn'
openssl.c:(.text+0x526): undefined reference to `DH_free'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `pn_ssl_domain':
openssl.c:(.text+0x71e): undefined reference to
`OPENSSL_add_all_algorithms_noconf'
openssl.c:(.text+0x8fd): undefined reference to `DH_free'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `pn_ssl':
openssl.c:(.text+0x1979): undefined reference to
`OPENSSL_add_all_algorithms_noconf'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `process_input_ssl':
openssl.c:(.text+0x1cd2): undefined reference to `BIO_write'
openssl.c:(.text+0x1d62): undefined reference to `BIO_ctrl'
openssl.c:(.text+0x1dcf): undefined reference to `BIO_read'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function
`process_output_ssl':
openssl.c:(.text+0x2268): undefined reference to `BIO_write'
openssl.c:(.text+0x240e): undefined reference to `BIO_read'
openssl.c:(.text+0x24b7): undefined reference to `BIO_ctrl'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `init_ssl_socket':
openssl.c:(.text+0x26a3): undefined reference to `BIO_new'
openssl.c:(.text+0x26fa): undefined reference to `BIO_ctrl'
openssl.c:(.text+0x2719): undefined reference to `BIO_new_bio_pair'
openssl.c:(.text+0x278f): undefined reference to `BIO_ctrl'
openssl.c:(.text+0x27cf): undefined reference to `BIO_ctrl'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function
`release_ssl_socket':
openssl.c:(.text+0x2816): undefined reference to `BIO_free'
openssl.c:(.text+0x284c): undefined reference to `BIO_free'
openssl.c:(.text+0x2866): undefined reference to `BIO_free'

I am not able to determine the underlying cause (my C skills are ten
years rusty), would someone be able to take a look and advise?

Kind regards Keith Wall.

For reference, the complete make output:

The error we see is

$  (cd proton-c/build/; rm -rf *; cmake -DCMAKE_INSTALL_PREFIX=/usr
..; make clean; make all)
-- The C compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Found OpenSSL: /usr/lib64/libssl.so
-- Looking for clock_gettime
-- Looking for clock_gettime - not found.
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- Looking for uuid_generate
-- Looking for uuid_generate - not found.
-- Looking for uuid_generate in uuid
-- Looking for uuid_generate in uuid - found
-- Found PythonLibs: /usr/lib64/python2.4/config/libpython2.4.a
-- Found Perl: /usr/bin/perl
-- Could NOT find PerlLibs  (missing:  PERL_LIBRARY PERL_INCLUDE_PATH)
-- Found PythonInterp: /usr/bin/python2.4
-- Found Doxygen: /usr/bin/doxygen
-- Configuring done
-- Generating done
-- Build files have been written to: /home/wallk/src/proton/proton-c/build
Scanning dependencies of target docs-c
Warning: ignoring unsupported tag `DOXYFILE_ENCODING      =' at line
42, file user.doxygen
Warning: ignoring unsupported tag `PROJECT_BRIEF          =' at line
60, file user.doxygen
Warning: ignoring unsupported tag `PROJECT_LOGO           =' at line
67, file user.doxygen
Warning: ignoring unsupported tag `QT_AUTOBRIEF           =' at line
181, file user.doxygen
Warning: ignoring unsupported tag `OPTIMIZE_FOR_FORTRAN   =' at line
235, file user.doxygen
Warning: ignoring unsupported tag `OPTIMIZE_OUTPUT_VHDL   =' at line
241, file user.doxygen
Warning: ignoring unsupported tag `EXTENSION_MAPPING      =' at line
253, file user.doxygen
Warning: ignoring unsupported tag `CPP_CLI_SUPPORT        =' at line
267, file user.doxygen
Warning: ignoring unsupported tag `SIP_SUPPORT            =' at line
273, file user.doxygen
Warning: ignoring unsupported tag `IDL_PROPERTY_SUPPORT   =' at line
282, file user.doxygen
Warning: ignoring unsupported tag `INLINE_GROUPED_CLASSES =' at line
304, file user.doxygen
Warning: ignoring unsupported tag `INLINE_SIMPLE_STRUCTS  =' at line
313, file user.doxygen
Warning: ignoring unsupported tag `TYPEDEF_HIDES_STRUCT   =' at line
323, file user.doxygen
Warning: ignoring unsupported tag `SYMBOL_CACHE_SIZE      =' at line
339, file user.doxygen
Warning: ignoring unsupported tag `EXTRACT_ANON_NSPACES   =' at line
381, file user.doxygen
Warning: ignoring unsupported tag `FORCE_LOCAL_INCLUDES   =' at line
443, file user.doxygen
Warning: ignoring unsupported tag `SORT_MEMBERS_CTORS_1ST =' at line
472, file user.doxygen
Warning: ignoring unsupported tag `SORT_GROUP_NAMES       =' at line
478, file user.doxygen
Warning: ignoring unsupported tag `STRICT_PROTO_MATCHING  =' at line
497, file user.doxygen
Warning: ignoring unsupported tag `SHOW_FILES             =' at line
554, file user.doxygen
Warning: ignoring unsupported tag `SHOW_NAMESPACES        =' at line
561, file user.doxygen
Warning: ignoring unsupported tag `LAYOUT_FILE            =' at line
580, file user.doxygen
Warning: ignoring unsupported tag `CITE_BIB_FILES         =' at line
589, file user.doxygen
Warning: ignoring unsupported tag `INPUT_ENCODING         =' at line
659, file user.doxygen
Warning: ignoring unsupported tag `EXCLUDE_SYMBOLS        =' at line
704, file user.doxygen
Warning: ignoring unsupported tag `FILTER_SOURCE_PATTERNS =' at line
766, file user.doxygen
Warning: ignoring unsupported tag `HTML_TIMESTAMP         =' at line
889, file user.doxygen
Warning: ignoring unsupported tag `HTML_EXTRA_FILES       =' at line
907, file user.doxygen
Warning: ignoring unsupported tag `HTML_COLORSTYLE_HUE    =' at line
917, file user.doxygen
Warning: ignoring unsupported tag `HTML_COLORSTYLE_SAT    =' at line
923, file user.doxygen
Warning: ignoring unsupported tag `HTML_COLORSTYLE_GAMMA  =' at line
932, file user.doxygen
Warning: ignoring unsupported tag `HTML_TIMESTAMP         =' at line
938, file user.doxygen
Warning: ignoring unsupported tag `HTML_DYNAMIC_SECTIONS  =' at line
952, file user.doxygen
Warning: ignoring unsupported tag `GENERATE_DOCSET        =' at line
965, file user.doxygen
Warning: ignoring unsupported tag `DOCSET_FEEDNAME        =' at line
972, file user.doxygen
Warning: ignoring unsupported tag `DOCSET_BUNDLE_ID       =' at line
979, file user.doxygen
Warning: ignoring unsupported tag `DOCSET_PUBLISHER_ID    =' at line
985, file user.doxygen
Warning: ignoring unsupported tag `DOCSET_PUBLISHER_NAME  =' at line
989, file user.doxygen
Warning: ignoring unsupported tag `CHM_INDEX_ENCODING     =' at line
1022, file user.doxygen
Warning: ignoring unsupported tag `GENERATE_QHP           =' at line
1040, file user.doxygen
Warning: ignoring unsupported tag `QCH_FILE               =' at line
1046, file user.doxygen
Warning: ignoring unsupported tag `QHP_NAMESPACE          =' at line
1052, file user.doxygen
Warning: ignoring unsupported tag `QHP_VIRTUAL_FOLDER     =' at line
1058, file user.doxygen
Warning: ignoring unsupported tag `QHP_CUST_FILTER_NAME   =' at line
1064, file user.doxygen
Warning: ignoring unsupported tag `QHP_CUST_FILTER_ATTRS  =' at line
1071, file user.doxygen
Warning: ignoring unsupported tag `QHP_SECT_FILTER_ATTRS  =' at line
1079, file user.doxygen
Warning: ignoring unsupported tag `QHG_LOCATION           =' at line
1086, file user.doxygen
Warning: ignoring unsupported tag `GENERATE_ECLIPSEHELP   =' at line
1097, file user.doxygen
Warning: ignoring unsupported tag `ECLIPSE_DOC_ID         =' at line
1103, file user.doxygen
Warning: ignoring unsupported tag `USE_INLINE_TREES       =' at line
1131, file user.doxygen
Warning: ignoring unsupported tag `EXT_LINKS_IN_WINDOW    =' at line
1142, file user.doxygen
Warning: ignoring unsupported tag `FORMULA_FONTSIZE       =' at line
1150, file user.doxygen
Warning: ignoring unsupported tag `FORMULA_TRANSPARENT    =' at line
1158, file user.doxygen
Warning: ignoring unsupported tag `USE_MATHJAX            =' at line
1167, file user.doxygen
Warning: ignoring unsupported tag `MATHJAX_RELPATH        =' at line
1178, file user.doxygen
Warning: ignoring unsupported tag `MATHJAX_EXTENSIONS     =' at line
1183, file user.doxygen
Warning: ignoring unsupported tag `SERVER_BASED_SEARCH    =' at line
1203, file user.doxygen
Warning: ignoring unsupported tag `LATEX_FOOTER           =' at line
1263, file user.doxygen
Warning: ignoring unsupported tag `LATEX_SOURCE_CODE      =' at line
1296, file user.doxygen
Warning: ignoring unsupported tag `LATEX_BIB_STYLE        =' at line
1302, file user.doxygen
Warning: ignoring unsupported tag `MSCGEN_PATH            =' at line
1586, file user.doxygen
Warning: ignoring unsupported tag `DOT_NUM_THREADS        =' at line
1607, file user.doxygen
Warning: ignoring unsupported tag `DOT_FONTNAME           =' at line
1616, file user.doxygen
Warning: ignoring unsupported tag `DOT_FONTSIZE           =' at line
1621, file user.doxygen
Warning: ignoring unsupported tag `DOT_FONTPATH           =' at line
1627, file user.doxygen
Warning: ignoring unsupported tag `INTERACTIVE_SVG        =' at line
1716, file user.doxygen
Warning: ignoring unsupported tag `MSCFILE_DIRS           =' at line
1733, file user.doxygen
Warning: ignoring unsupported tag `DOT_GRAPH_MAX_NODES    =' at line
1743, file user.doxygen
Searching for include files...
Searching for example files...
Searching for images...
Searching for dot files...
Searching for files to exclude
Searching for files to process...
Reading and parsing tag files
Preprocessing /home/wallk/src/proton/proton-c/include/proton/buffer.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/buffer.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/codec.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/codec.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/driver.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/driver.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/engine.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/engine.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/error.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/error.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/framing.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/framing.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/message.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/message.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/messenger.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/messenger.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/parser.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/parser.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/sasl.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/sasl.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/scanner.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/scanner.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/ssl.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/ssl.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/types.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/types.h...
Preprocessing /home/wallk/src/proton/proton-c/include/proton/util.h...
Parsing file /home/wallk/src/proton/proton-c/include/proton/util.h...
Building group list...
Building directory list...
Building namespace list...
Building file list...
Searching for included using directives...
Building class list...
Associating documentation with classes...
Computing nesting relations for classes...
Searching for members imported via using declarations...
Building example list...
Searching for documented variables...
Building member list...
Searching for friends...
Searching for documented defines...
Computing template instances...
Flushing cached template relations that have become invalid...
Creating members for template instances...
Computing class relations...
Searching for enumerations...
Searching for member function documentation...
Building page list...
Search for main page...
Computing page relations...
Determining the scope of groups...
Sorting lists...
Freeing entry tree
Determining which enums are documented
Computing member relations...
Building full member lists recursively...
Adding members to member groups.
Computing member references...
Inheriting documentation...
Generating disk names...
Adding source references...
Adding todo/test/bug list items...
Generating style sheet...
Counting data structures...
Resolving user defined references...
Combining using relations...
Finding anchors and sections in the documentation...
Generating index page...
Generating example documentation...
Generating file sources...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/buffer.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/codec.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/driver.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/engine.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/error.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/framing.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/message.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/messenger.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/parser.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/sasl.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/scanner.h...
Generating code for file /home/wallk/src/proton/proton-c/include/proton/ssl.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/types.h...
Generating code for file
/home/wallk/src/proton/proton-c/include/proton/util.h...
Generating file documentation...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/buffer.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/codec.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/driver.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/engine.h...
/home/wallk/src/proton/proton-c/include/proton/engine.h:283: Warning:
The following parameters of pn_transport_tick(pn_transport_t
*transport, pn_timestamp_t now) are not documented:
  parameter now

Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/error.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/framing.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/message.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/messenger.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/parser.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/sasl.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/scanner.h...
Generating docs for file /home/wallk/src/proton/proton-c/include/proton/ssl.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/types.h...
Generating docs for file
/home/wallk/src/proton/proton-c/include/proton/util.h...
Generating page documentation...
Generating docs for page todo...
Generating docs for page deprecated...
Generating group documentation...
Generating group index...
Generating class documentation...
Generating annotated compound index...
Generating alphabetical compound index...
Generating hierarchical class index...
Generating member index...
Generating docs for compound pn_atom_t...
Generating docs for compound pn_bytes_t...
Generating docs for compound pn_decimal128_t...
Generating docs for compound pn_delivery_tag_t...
Generating docs for compound pn_frame_t...
Generating docs for compound pn_token_t...
Generating docs for compound pn_uuid_t...
Generating namespace index...
Generating namespace member index...
Generating graph info page...
Generating file index...
Generating example index...
Generating file member index...
Generating page index...
Generating search index
[  0%] Built target docs-c
Scanning dependencies of target docs
[  0%] Built target docs
[  3%] Generating protocol.h
[  7%] Generating encodings.h
Scanning dependencies of target qpid-proton
[ 11%] Building C object CMakeFiles/qpid-proton.dir/src/util.c.o
[ 15%] Building C object CMakeFiles/qpid-proton.dir/src/error.c.o
[ 19%] Building C object CMakeFiles/qpid-proton.dir/src/buffer.c.o
[ 23%] Building C object CMakeFiles/qpid-proton.dir/src/parser.c.o
[ 26%] Building C object CMakeFiles/qpid-proton.dir/src/scanner.c.o
[ 30%] Building C object CMakeFiles/qpid-proton.dir/src/types.c.o
[ 34%] Building C object CMakeFiles/qpid-proton.dir/src/framing/framing.c.o
[ 38%] Building C object CMakeFiles/qpid-proton.dir/src/codec/codec.c.o
[ 42%] Building C object
CMakeFiles/qpid-proton.dir/src/dispatcher/dispatcher.c.o
[ 46%] Building C object CMakeFiles/qpid-proton.dir/src/engine/engine.c.o
[ 50%] Building C object CMakeFiles/qpid-proton.dir/src/message/message.c.o
[ 53%] Building C object CMakeFiles/qpid-proton.dir/src/sasl/sasl.c.o
[ 57%] Building C object CMakeFiles/qpid-proton.dir/src/messenger.c.o
[ 61%] Building C object CMakeFiles/qpid-proton.dir/src/driver.c.o
[ 65%] Building C object CMakeFiles/qpid-proton.dir/src/platform.c.o
[ 69%] Building C object CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o
Linking C shared library libqpid-proton.so
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `_log_ssl_error':
openssl.c:(.text+0x2de): undefined reference to `ERR_get_error'
openssl.c:(.text+0x2ff): undefined reference to `ERR_error_string_n'
openssl.c:(.text+0x31c): undefined reference to `ERR_get_error'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `ssl_failed':
openssl.c:(.text+0x43f): undefined reference to `ERR_get_error'
openssl.c:(.text+0x45f): undefined reference to `ERR_error_string_n'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `get_dh2048':
openssl.c:(.text+0x4ac): undefined reference to `DH_new'
openssl.c:(.text+0x4d7): undefined reference to `BN_bin2bn'
openssl.c:(.text+0x4f8): undefined reference to `BN_bin2bn'
openssl.c:(.text+0x526): undefined reference to `DH_free'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `pn_ssl_domain':
openssl.c:(.text+0x71e): undefined reference to
`OPENSSL_add_all_algorithms_noconf'
openssl.c:(.text+0x8fd): undefined reference to `DH_free'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `pn_ssl':
openssl.c:(.text+0x1979): undefined reference to
`OPENSSL_add_all_algorithms_noconf'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `process_input_ssl':
openssl.c:(.text+0x1cd2): undefined reference to `BIO_write'
openssl.c:(.text+0x1d62): undefined reference to `BIO_ctrl'
openssl.c:(.text+0x1dcf): undefined reference to `BIO_read'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function
`process_output_ssl':
openssl.c:(.text+0x2268): undefined reference to `BIO_write'
openssl.c:(.text+0x240e): undefined reference to `BIO_read'
openssl.c:(.text+0x24b7): undefined reference to `BIO_ctrl'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `init_ssl_socket':
openssl.c:(.text+0x26a3): undefined reference to `BIO_new'
openssl.c:(.text+0x26fa): undefined reference to `BIO_ctrl'
openssl.c:(.text+0x2719): undefined reference to `BIO_new_bio_pair'
openssl.c:(.text+0x278f): undefined reference to `BIO_ctrl'
openssl.c:(.text+0x27cf): undefined reference to `BIO_ctrl'
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function
`release_ssl_socket':
openssl.c:(.text+0x2816): undefined reference to `BIO_free'
openssl.c:(.text+0x284c): undefined reference to `BIO_free'
openssl.c:(.text+0x2866): undefined reference to `BIO_free'
collect2: ld returned 1 exit status
make[2]: *** [libqpid-proton.so.1.0.0] Error 1
make[1]: *** [CMakeFiles/qpid-proton.dir/all] Error 2
make: *** [all] Error 2

Re: Can't build proton-c undefined symbols ERR_get_error etc

Posted by Andrew Stitcher <as...@redhat.com>.
On Wed, 2012-12-12 at 17:44 +0000, Keith W wrote:
> Hi Andrew,
> 
> Thanks for the rapid response. I confirm that the workaroud you
> suggest works successfully.
> 
> Here are the details:
> 
> > Could you run "make VERBOSE=1" and post the final link line (only).
> ...
> CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o -luuid -lssl -lrt

Looks like -lcrypt might be missing.

Andrew



Re: Can't build proton-c undefined symbols ERR_get_error etc

Posted by Keith W <ke...@gmail.com>.
Hi Andrew,

Thanks for the rapid response. I confirm that the workaroud you
suggest works successfully.

Here are the details:

> Could you run "make VERBOSE=1" and post the final link line (only).

/usr/bin/cmake -E cmake_link_script
CMakeFiles/qpid-proton.dir/link.txt --verbose=1
/usr/bin/gcc  -fPIC  -Wl,--no-undefined -shared
-Wl,-soname,libqpid-proton.so.1 -o libqpid-proton.so.1.0.0
CMakeFiles/qpid-proton.dir/src/util.c.o
CMakeFiles/qpid-proton.dir/src/error.c.o
CMakeFiles/qpid-proton.dir/src/buffer.c.o
CMakeFiles/qpid-proton.dir/src/parser.c.o
CMakeFiles/qpid-proton.dir/src/scanner.c.o
CMakeFiles/qpid-proton.dir/src/types.c.o
CMakeFiles/qpid-proton.dir/src/framing/framing.c.o
CMakeFiles/qpid-proton.dir/src/codec/codec.c.o
CMakeFiles/qpid-proton.dir/src/dispatcher/dispatcher.c.o
CMakeFiles/qpid-proton.dir/src/engine/engine.c.o
CMakeFiles/qpid-proton.dir/src/message/message.c.o
CMakeFiles/qpid-proton.dir/src/sasl/sasl.c.o
CMakeFiles/qpid-proton.dir/src/messenger.c.o
CMakeFiles/qpid-proton.dir/src/driver.c.o
CMakeFiles/qpid-proton.dir/src/platform.c.o
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o -luuid -lssl -lrt
CMakeFiles/qpid-proton.dir/src/ssl/openssl.c.o: In function `_log_ssl_error':
openssl.c:(.text+0x2de): undefined reference to `ERR_get_error'
openssl.c:(.text+0x2ff): undefined reference to `ERR_error_string_n'

> Another useful datapoint would be to build with the above flag and then
> post the results of "ldd libqpid-proton.so".

 ldd libqpid-proton.so
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00002b00ebce6000)
        libssl.so.6 => /lib64/libssl.so.6 (0x00002b00ebeea000)
        librt.so.1 => /lib64/librt.so.1 (0x00002b00ec134000)
        libc.so.6 => /lib64/libc.so.6 (0x00002b00ec33e000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003f86000000)
        libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2
(0x00002b00ec694000)
        libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002b00ec8c2000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002b00ecb58000)
        libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002b00ecd5a000)
        libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002b00ecf7f000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002b00ed2d1000)
        libz.so.1 => /usr/lib64/libz.so.1 (0x00002b00ed4d5000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b00ed6e9000)
        libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0
(0x00002b00ed905000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002b00edb0d000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00002b00edd0f000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00002b00edf25000)
        libsepol.so.1 => /lib64/libsepol.so.1 (0x00002b00ee13d000)

Re: Can't build proton-c undefined symbols ERR_get_error etc

Posted by Andrew Stitcher <as...@redhat.com>.
On Wed, 2012-12-12 at 14:22 +0000, Keith W wrote:
> Hi all
> 
> We are having problems building proton-c on our dev boxes (Red Hat
> Enterprise Linux Server release 5.3 (Tikanga)).  I've done a git
> bisect and discovered that it was Andrew's commit last Wednesday (rev
> 1417553) that has introduced/exposed the issue.  Before that point, we
> could build without this issue.

It seems that the link process is not resolving all the symbols it
needs.

That change introduces checking to be sure that all symbols used by the
link are actually present somewhere. The simplest explanation is that
openssl is not being linked in the final link, but is being detected
enough to activate the code using it.

Could you run "make VERBOSE=1" and post the final link line (only).

As a workaround you can turn this checking off with "cmake
-DENABLE_UNDEFINED_ERROR=OFF". However if the warning is good then you
shouldn't actually be able to run code with ssl connections (unless you
link the final executable with openssl, which isn't really necessary).

Another useful datapoint would be to build with the above flag and then
post the results of "ldd libqpid-proton.so".

Andrew