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 > >