If I remove the rpath from the makefile in the lib-ssl-iostream 
directory it will compile.  This shouldn’t cause it not to compile.  There are 
several directories that have rpath in the makefile.  Also, putting 
--disable-rpath in the configure string doesn’t work.  I also need rpath as the 
files are not in the standard path locations.



> On Aug 4, 2021, at 12:30 PM, Beosdoc <beos...@hotmail.com> wrote:
> 
> Hi,
>       I’m trying to compile Dovecot 2.3.15 on a Intel Mac with Big Sur and 
> Xcode 12.5.1 with command line.  I’ve compiled openSSL -1.1.1k in its own 
> directory and pointed dovecot to use that directory.  I’m getting undefined 
> symbols during the linking (see below).  I’ve been trying to figure out 
> what’s missing but not having any luck
> 
> Here’s the configure:
> CPPFLAGS="-I/Library/MWSrvrSrvcs/openssl/include" 
> LDFLAGS="-L/Library/MWSrvrSrvcs/openssl/lib" ./configure 
> --prefix=/Library/MWSrvrSrvcs/dovecot --with-ssl=openssl --with-gnu-ld 
> --with-pgsql=auto --with-mysql=auto --with-sqlite=auto --with-gssapi=yes 
> --with-ldap=auto --with-solr=no --with-libwrap=auto --with-ioloop=no 
> --with-bzlib --with-zlib --with-notify=no --without-shared-libs 
> --sysconfdir=/Library/MWSrvrSrvcs/Mail/Config 
> --datadir=/Library/MWSrvrSrvcs/Mail/Data
> 
> Here’s where it errors out:
> /bin/sh ../../libtool  --tag=CC   --mode=link gcc  -std=gnu99 -g -O2 
> -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -W 
> -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts 
> -Wformat=2 -Wbad-function-cast -Wno-duplicate-decl-specifier 
> -Wstrict-aliasing=2  -module -avoid-version  
> -L/Library/MWSrvrSrvcs/openssl/lib  -o libssl_iostream_openssl.la -rpath 
> /Library/MWSrvrSrvcs/dovecot/lib/dovecot dovecot-openssl-common.lo 
> iostream-openssl.lo iostream-openssl-common.lo iostream-openssl-context.lo 
> istream-openssl.lo ostream-openssl.lo -lssl -lcrypto  
> libtool: link: gcc  -o .libs/libssl_iostream_openssl.so -bundle  
> .libs/dovecot-openssl-common.o .libs/iostream-openssl.o 
> .libs/iostream-openssl-common.o .libs/iostream-openssl-context.o 
> .libs/istream-openssl.o .libs/ostream-openssl.o   
> -L/Library/MWSrvrSrvcs/openssl/lib -lssl -lcrypto  -g -O2 
> -fstack-protector-strong  
> Undefined symbols for architecture x86_64:
>  "_buffer_append", referenced from:
>      _openssl_iostream_error in iostream-openssl-common.o
>      _o_stream_ssl_sendv in ostream-openssl.o
>  "_buffer_create_dynamic", referenced from:
>      _o_stream_ssl_sendv in ostream-openssl.o
>  "_buffer_delete", referenced from:
>      _o_stream_ssl_flush_buffer in ostream-openssl.o
>  "_buffer_free", referenced from:
>      _o_stream_ssl_destroy in ostream-openssl.o
>  "_buffer_get_writable_size", referenced from:
>      _o_stream_ssl_sendv in ostream-openssl.o
>      _o_stream_ssl_get_buffer_avail_size in ostream-openssl.o
>  "_default_pool", referenced from:
>      _openssl_iostream_set_error in iostream-openssl.o
>      _openssl_iostream_bio_sync in iostream-openssl.o
>      _openssl_iostream_handle_error in iostream-openssl.o
>      _openssl_iostream_create in iostream-openssl.o
>      _openssl_iostream_handshake in iostream-openssl.o
>      _openssl_iostream_set_log_prefix in iostream-openssl.o
>      _openssl_iostream_free in iostream-openssl.o
>      ...
>  "_i_debug", referenced from:
>      _openssl_iostream_set_error in iostream-openssl.o
>      _openssl_iostream_handle_error in iostream-openssl.o
>      _openssl_iostream_handshake in iostream-openssl.o
>      _openssl_info_callback in iostream-openssl.o
>      _openssl_iostream_verify_client_cert in iostream-openssl.o
>      _ssl_iostream_context_init_common in iostream-openssl-context.o
>      _ssl_servername_callback in iostream-openssl-context.o
>      ...
>  "_i_error", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>      _ssl_tmp_dh_callback in iostream-openssl-context.o
>  "_i_fatal", referenced from:
>      _ssl_iostream_openssl_init in iostream-openssl.o
>      _ssl_iostream_context_init_common in iostream-openssl-context.o
>      _ssl_ctx_use_certificate_chain in iostream-openssl-context.o
>  "_i_fatal_status", referenced from:
>      _dovecot_openssl_malloc in dovecot-openssl-common.o
>      _dovecot_openssl_realloc in dovecot-openssl-common.o
>      _openssl_iostream_error in iostream-openssl-common.o
>  "_i_info", referenced from:
>      _openssl_iostream_verify_client_cert in iostream-openssl.o
>  "_i_panic", referenced from:
>      _dovecot_openssl_common_global_unref in dovecot-openssl-common.o
>      _openssl_iostream_shutdown in iostream-openssl.o
>      _openssl_iostream_bio_sync in iostream-openssl.o
>      _openssl_iostream_handle_error in iostream-openssl.o
>      _openssl_iostream_create in iostream-openssl.o
>      _openssl_iostream_unref in iostream-openssl.o
>      _openssl_iostream_handshake in iostream-openssl.o
>      ...
>  "_i_strdup", referenced from:
>      _openssl_iostream_set_error in iostream-openssl.o
>      _openssl_iostream_bio_sync in iostream-openssl.o
>      _openssl_iostream_handle_error in iostream-openssl.o
>      _openssl_iostream_create in iostream-openssl.o
>      _openssl_iostream_handshake in iostream-openssl.o
>      _openssl_iostream_set_log_prefix in iostream-openssl.o
>      _openssl_iostream_verify_client_cert in iostream-openssl.o
>      ...
>  "_i_strdup_printf", referenced from:
>      _openssl_iostream_create in iostream-openssl.o
>  "_i_stream_alloc", referenced from:
>      _i_stream_ssl_read in istream-openssl.o
>  "_i_stream_close", referenced from:
>      _openssl_iostream_shutdown in iostream-openssl.o
>      _openssl_iostream_handshake in iostream-openssl.o
>      _i_stream_ssl_close in istream-openssl.o
>  "_i_stream_create", referenced from:
>      _openssl_i_stream_create_ssl in istream-openssl.o
>     (maybe you meant: _openssl_i_stream_create_ssl)
>  "_i_stream_free_buffer", referenced from:
>      _i_stream_ssl_destroy in istream-openssl.o
>  "_i_stream_get_data", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>  "_i_stream_get_data_size", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>      _i_stream_ssl_read in istream-openssl.o
>  "_i_stream_get_error", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>  "_i_stream_get_fd", referenced from:
>      _openssl_i_stream_create_ssl in istream-openssl.o
>  "_i_stream_get_name", referenced from:
>      _openssl_iostream_create in iostream-openssl.o
>  "_i_stream_get_root_io", referenced from:
>      _openssl_iostream_create in iostream-openssl.o
>  "_i_stream_read_data", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>  "_i_stream_ref", referenced from:
>      _openssl_o_stream_create_ssl in ostream-openssl.o
>  "_i_stream_set_input_pending", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>  "_i_stream_set_name", referenced from:
>      _openssl_iostream_create in iostream-openssl.o
>  "_i_stream_skip", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>  "_i_stream_try_alloc", referenced from:
>      _i_stream_ssl_read in istream-openssl.o
>  "_i_stream_unref", referenced from:
>      _openssl_iostream_free in iostream-openssl.o
>      _o_stream_ssl_destroy in ostream-openssl.o
>  "_i_strocpy", referenced from:
>      _pem_password_callback in iostream-openssl-context.o
>  "_io_stream_set_error", referenced from:
>      _i_stream_ssl_read in istream-openssl.o
>      _o_stream_ssl_flush in ostream-openssl.o
>      _o_stream_ssl_flush_buffer in ostream-openssl.o
>  "_iostream_ssl_module_init", referenced from:
>      _ssl_iostream_openssl_init in iostream-openssl.o
>  "_o_stream_close", referenced from:
>      _openssl_iostream_shutdown in iostream-openssl.o
>      _openssl_iostream_handshake in iostream-openssl.o
>      _o_stream_ssl_close in ostream-openssl.o
>  "_o_stream_cork", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>  "_o_stream_create", referenced from:
>      _openssl_o_stream_create_ssl in ostream-openssl.o
>     (maybe you meant: _openssl_o_stream_create_ssl)
>  "_o_stream_flush", referenced from:
>      _openssl_iostream_shutdown in iostream-openssl.o
>      _openssl_iostream_handshake in iostream-openssl.o
>      _plain_flush_callback in ostream-openssl.o
>  "_o_stream_get_buffer_avail_size", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>  "_o_stream_get_buffer_used_size", referenced from:
>      _o_stream_ssl_flush in ostream-openssl.o
>      _o_stream_ssl_get_buffer_used_size in ostream-openssl.o
>  "_o_stream_get_error", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>  "_o_stream_get_fd", referenced from:
>      _openssl_o_stream_create_ssl in ostream-openssl.o
>  "_o_stream_get_name", referenced from:
>      _openssl_iostream_create in iostream-openssl.o
>  "_o_stream_ref", referenced from:
>      _plain_flush_callback in ostream-openssl.o
>  "_o_stream_send", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>  "_o_stream_set_flush_callback", referenced from:
>      _openssl_o_stream_create_ssl in ostream-openssl.o
>  "_o_stream_set_flush_pending", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>      _o_stream_ssl_sendv in ostream-openssl.o
>      _o_stream_ssl_flush in ostream-openssl.o
>      _o_stream_ssl_flush_pending in ostream-openssl.o
>      _plain_flush_callback in ostream-openssl.o
>  "_o_stream_set_max_buffer_size", referenced from:
>      _o_stream_ssl_set_max_buffer_size in ostream-openssl.o
>  "_o_stream_set_name", referenced from:
>      _openssl_iostream_create in iostream-openssl.o
>  "_o_stream_set_no_error_handling", referenced from:
>      _openssl_iostream_create in iostream-openssl.o
>  "_o_stream_switch_ioloop_to", referenced from:
>      _o_stream_ssl_switch_ioloop_to in ostream-openssl.o
>  "_o_stream_uncork", referenced from:
>      _openssl_iostream_bio_sync in iostream-openssl.o
>      _openssl_iostream_create in iostream-openssl.o
>  "_o_stream_unref", referenced from:
>      _openssl_iostream_free in iostream-openssl.o
>      _plain_flush_callback in ostream-openssl.o
>  "_pool_alloconly_create", referenced from:
>      _ssl_iostream_context_init_common in iostream-openssl-context.o
>  "_safe_memset", referenced from:
>      _openssl_iostream_load_key in iostream-openssl-context.o
>  "_ssl_iostream_check_cert_validity", referenced from:
>      _openssl_iostream_handshake in iostream-openssl.o
>  "_ssl_iostream_context_ref", referenced from:
>      _openssl_iostream_create in iostream-openssl.o
>      _openssl_iostream_change_context in iostream-openssl.o
>  "_ssl_iostream_context_unref", referenced from:
>      _openssl_iostream_change_context in iostream-openssl.o
>      _openssl_iostream_free in iostream-openssl.o
>      _openssl_iostream_context_init_client in iostream-openssl-context.o
>      _openssl_iostream_context_init_server in iostream-openssl-context.o
>  "_ssl_iostream_handshake", referenced from:
>      _openssl_iostream_shutdown in iostream-openssl.o
>      _openssl_iostream_more in iostream-openssl.o
>  "_ssl_iostream_has_valid_client_cert", referenced from:
>      _openssl_iostream_cert_match_name in iostream-openssl.o
>      _openssl_iostream_get_peer_name in iostream-openssl.o
>  "_ssl_iostream_settings_init_from", referenced from:
>      _ssl_iostream_context_init_common in iostream-openssl-context.o
>  "_ssl_iostream_unref", referenced from:
>      _openssl_iostream_destroy in iostream-openssl.o
>      _i_stream_ssl_destroy in istream-openssl.o
>      _o_stream_ssl_destroy in ostream-openssl.o
>  "_str_c", referenced from:
>      _openssl_iostream_error in iostream-openssl-common.o
>  "_str_printfa", referenced from:
>      _openssl_iostream_error in iostream-openssl-common.o
>  "_t_malloc0", referenced from:
>      _openssl_iostream_get_peer_name in iostream-openssl.o
>      _openssl_iostream_error in iostream-openssl-common.o
>  "_t_str_new", referenced from:
>      _openssl_iostream_error in iostream-openssl-common.o
>  "_t_strconcat", referenced from:
>      _openssl_iostream_create in iostream-openssl.o
>  "_t_strdup_noconst", referenced from:
>      _openssl_iostream_use_certificate in iostream-openssl.o
>      _openssl_iostream_load_key in iostream-openssl-context.o
>      _ssl_iostream_context_init_common in iostream-openssl-context.o
>      _ssl_ctx_use_certificate_chain in iostream-openssl-context.o
>  "_t_strdup_printf", referenced from:
>      _dovecot_openssl_common_global_set_engine in dovecot-openssl-common.o
>      _openssl_iostream_handle_error in iostream-openssl.o
>      _openssl_iostream_create in iostream-openssl.o
>      _openssl_iostream_get_security_string in iostream-openssl.o
>      _openssl_iostream_use_certificate in iostream-openssl.o
>      _openssl_iostream_verify_client_cert in iostream-openssl.o
>      _openssl_cert_match_name in iostream-openssl-common.o
>      ...
> ld: symbol(s) not found for architecture x86_64
> clang: error: linker command failed with exit code 1 (use -v to see 
> invocation)
> make[3]: *** [libssl_iostream_openssl.la] Error 1
> make[2]: *** [all-recursive] Error 1
> make[1]: *** [all-recursive] Error 1
> make: *** [all] Error 2
> 
> 
> 
> Thanks
> Mitch
> 
> 

Reply via email to