Я работаю над проектом cpp и пытаюсь собрать проект с помощью следующей команды в папке сборки
cmake ..
make
и во время связывания я получаю сообщение об ошибке
[ 96%] Linking CXX shared library libsdkrest.dylib
ld: warning: -s is obsolete
ld: warning: -undefined error is deprecated
Undefined symbols for architecture arm64:
"_bcrypt_gensalt", referenced from:
BCrypt::generateSalt() in SDKRESTAPI.cc.o
"_ber_free", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_idn2_check_version", referenced from:
_Curl_idn_decode in libcurl.a[68](libcurl_la-idn.o)
_Curl_idnconvert_hostname in libcurl.a[68](libcurl_la-idn.o)
"_idn2_free", referenced from:
_Curl_idn_decode in libcurl.a[68](libcurl_la-idn.o)
_Curl_free_idnconverted_hostname in libcurl.a[68](libcurl_la-idn.o)
"_idn2_lookup_ul", referenced from:
_Curl_idn_decode in libcurl.a[68](libcurl_la-idn.o)
_Curl_idn_decode in libcurl.a[68](libcurl_la-idn.o)
_Curl_idnconvert_hostname in libcurl.a[68](libcurl_la-idn.o)
_Curl_idnconvert_hostname in libcurl.a[68](libcurl_la-idn.o)
"_ldap_err2string", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_first_attribute", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_first_entry", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_free_urldesc", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_get_dn", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_get_values_len", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_init", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_memfree", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_msgfree", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_next_attribute", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_next_entry", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_search_s", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_set_option", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_simple_bind_s", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_unbind_s", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_url_parse", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_value_free_len", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_nghttp2_http2_strerror", referenced from:
_http2_handle_stream_close in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_is_fatal", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_option_del", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_option_new", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_pack_settings_payload", referenced from:
_Curl_http2_request_upgrade in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_priority_spec_init", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_del", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_new", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_error_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_begin_headers_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_data_chunk_recv_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_frame_recv_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_header_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_stream_close_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_send_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_check_request_allowed", referenced from:
_cf_h2_query in libcurl.a[61](libcurl_la-http2.o)
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_client_new2", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_del", referenced from:
_cf_h2_destroy in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_close in libcurl.a[61](libcurl_la-http2.o)
_http2_cfilter_add in libcurl.a[61](libcurl_la-http2.o)
_Curl_http2_switch_at in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_get_remote_settings", referenced from:
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_get_remote_window_size", referenced from:
_cf_h2_get_select_socks in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_get_stream_remote_window_size", referenced from:
_cf_h2_get_select_socks in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_get_stream_user_data", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_data_source_read_callback in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_data_chunk_recv in libcurl.a[61](libcurl_la-http2.o)
_on_stream_close in libcurl.a[61](libcurl_la-http2.o)
_on_begin_headers in libcurl.a[61](libcurl_la-http2.o)
_on_header in libcurl.a[61](libcurl_la-http2.o)
...
"_nghttp2_session_mem_recv", referenced from:
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_resume_data", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_send", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_keep_alive in libcurl.a[61](libcurl_la-http2.o)
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_set_local_window_size", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_set_stream_user_data", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_stream_close in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_upgrade2", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_want_read", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_recv in libcurl.a[61](libcurl_la-http2.o)
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
_should_close_session in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_want_write", referenced from:
_cf_h2_get_select_socks in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_recv in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
_should_close_session in libcurl.a[61](libcurl_la-http2.o)
...
"_nghttp2_strerror", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_keep_alive in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_keep_alive in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
...
"_nghttp2_submit_ping", referenced from:
_cf_h2_keep_alive in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_submit_priority", referenced from:
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_submit_request", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_submit_rst_stream", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_header in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_submit_settings", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_version", referenced from:
_Curl_http2_ver in libcurl.a[61](libcurl_la-http2.o)
ld: symbol(s) not found for architecture arm64
c++: error: linker command failed with exit code 1 (use -v to see invocation)
Похоже, что ошибка связана с тем, что libcurl не настроен и не собран правильно, но я использовал конфигурацию ниже
ExternalProject_Add(curl
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${CURL_DIR}
INSTALL_DIR ${THIRDPARTY_INSTALL_DIR}
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${CURL_DIR}/configure --prefix= --with-openssl --disable-openssl-auto-load-config --without-zlib --disable-ldap --without-nghttp2 --without-brotli --without-librtmp --without-libidn2 --host=arm-apple-darwin23
BUILD_COMMAND make
INSTALL_COMMAND make install)
ExternalProject_Add_Step(curl
fixinstallname
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -id "@rpath/libcurl.4.dylib" /lib/libcurl.4.dylib
DEPENDEES install)
add_dependencies(curl openssl zlib)
Здесь я создаю библиотеку Curl без ldap и http2, но даже после этого выдает связанную с этим ошибку. Пожалуйста, кто-нибудь помогите мне определить проблему.
Редактировать: Подробнее
Из-за комментариев Цыварева я проверил bcrypt lib на наличие проблемы, ссылка на библиотека приведена ниже
https://github.com/trusch/libbcrypt
и я обнаружил, что в нее внесены некоторые изменения lib от предыдущего разработчика, предыдущий разработчик добавил приведенный ниже код в Раздел public: файла Bcrypt.hpp для возможности вызова метода genrateSalt
static std::string generateSalt() {
char salt[BCRYPT_HASHSIZE];
int ret = bcrypt_gensalt(10, salt);
if(ret != 0)throw std::runtime_error{"bcrypt: can not generate salt"};
std::string saltString = salt;
return saltString;
}
и использование конфигурации для сборки libbcrypt
ExternalProject_Add(bcrypt
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${BCRYPT_DIR}
INSTALL_DIR ${THIRDPARTY_INSTALL_DIR}
BUILD_COMMAND make
CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=)
Редактирование 2: код cmake для связывания
target_link_libraries(
sdkrest
base64
utility
${JSONCPP_LIBRARY}
${CURL_LIBRARY}
${OPENSSL_LIBRARIES}
${ZLIB_LIBRARIES}
${DATADOG_LIBRARY}
${LEVELDB_LIBRARY}
${SHAMIR_LIBRARY}
${THRIFT_LIBRARY}
${SDKLO_LIBRARY}
${OPENTRACING_LIBRARY}
Threads::Threads
${CMAKE_DL_LIBS}
)
Я тоже пытался добавить выше
${CRYPT_LIB}
${LDAP_LIB}
${IDN2_LIB}
с приведенным ниже кодом
find_library(CRYPT_LIB crypt)
find_library(LDAP_LIB ldap)
find_library(IDN2_LIB idn2)
# Check if the libraries were found
if(NOT CRYPT_LIB)
message(FATAL_ERROR "libcrypt not found")
endif()
if(NOT LDAP_LIB)
message(FATAL_ERROR "libldap not found")
endif()
if(NOT IDN2_LIB)
message(FATAL_ERROR "libidn2 not found")
endif()
но получаю ошибку
CMake Error at CMakeLists.txt:183 (message):
libcrypt not found
Подробнее здесь: https://stackoverflow.com/questions/792 ... pt-gensalt
Неопределенные символы для архитектуры Arm64: "_bcrypt_gensalt ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1732823637
Anonymous
Я работаю над проектом cpp и пытаюсь собрать проект с помощью следующей команды в папке сборки
cmake ..
make
и во время связывания я получаю сообщение об ошибке
[ 96%] Linking CXX shared library libsdkrest.dylib
ld: warning: -s is obsolete
ld: warning: -undefined error is deprecated
Undefined symbols for architecture arm64:
"_bcrypt_gensalt", referenced from:
BCrypt::generateSalt() in SDKRESTAPI.cc.o
"_ber_free", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_idn2_check_version", referenced from:
_Curl_idn_decode in libcurl.a[68](libcurl_la-idn.o)
_Curl_idnconvert_hostname in libcurl.a[68](libcurl_la-idn.o)
"_idn2_free", referenced from:
_Curl_idn_decode in libcurl.a[68](libcurl_la-idn.o)
_Curl_free_idnconverted_hostname in libcurl.a[68](libcurl_la-idn.o)
"_idn2_lookup_ul", referenced from:
_Curl_idn_decode in libcurl.a[68](libcurl_la-idn.o)
_Curl_idn_decode in libcurl.a[68](libcurl_la-idn.o)
_Curl_idnconvert_hostname in libcurl.a[68](libcurl_la-idn.o)
_Curl_idnconvert_hostname in libcurl.a[68](libcurl_la-idn.o)
"_ldap_err2string", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_first_attribute", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_first_entry", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_free_urldesc", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_get_dn", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_get_values_len", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_init", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_memfree", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_msgfree", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_next_attribute", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_next_entry", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_search_s", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_set_option", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_simple_bind_s", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_unbind_s", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_url_parse", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_ldap_value_free_len", referenced from:
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
_ldap_do in libcurl.a[74](libcurl_la-ldap.o)
"_nghttp2_http2_strerror", referenced from:
_http2_handle_stream_close in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_is_fatal", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_option_del", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_option_new", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_pack_settings_payload", referenced from:
_Curl_http2_request_upgrade in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_priority_spec_init", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_del", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_new", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_error_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_begin_headers_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_data_chunk_recv_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_frame_recv_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_header_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_on_stream_close_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_callbacks_set_send_callback", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_check_request_allowed", referenced from:
_cf_h2_query in libcurl.a[61](libcurl_la-http2.o)
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_client_new2", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_del", referenced from:
_cf_h2_destroy in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_close in libcurl.a[61](libcurl_la-http2.o)
_http2_cfilter_add in libcurl.a[61](libcurl_la-http2.o)
_Curl_http2_switch_at in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_get_remote_settings", referenced from:
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_get_remote_window_size", referenced from:
_cf_h2_get_select_socks in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_get_stream_remote_window_size", referenced from:
_cf_h2_get_select_socks in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_get_stream_user_data", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_data_source_read_callback in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_data_chunk_recv in libcurl.a[61](libcurl_la-http2.o)
_on_stream_close in libcurl.a[61](libcurl_la-http2.o)
_on_begin_headers in libcurl.a[61](libcurl_la-http2.o)
_on_header in libcurl.a[61](libcurl_la-http2.o)
...
"_nghttp2_session_mem_recv", referenced from:
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_resume_data", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_send", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_keep_alive in libcurl.a[61](libcurl_la-http2.o)
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_set_local_window_size", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_set_stream_user_data", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_stream_close in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_upgrade2", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_want_read", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_recv in libcurl.a[61](libcurl_la-http2.o)
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
_should_close_session in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_session_want_write", referenced from:
_cf_h2_get_select_socks in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_recv in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
_should_close_session in libcurl.a[61](libcurl_la-http2.o)
...
"_nghttp2_strerror", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_keep_alive in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_keep_alive in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
_h2_process_pending_input in libcurl.a[61](libcurl_la-http2.o)
...
"_nghttp2_submit_ping", referenced from:
_cf_h2_keep_alive in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_submit_priority", referenced from:
_h2_session_send in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_submit_request", referenced from:
_cf_h2_send in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_submit_rst_stream", referenced from:
_cf_h2_cntrl in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_frame_recv in libcurl.a[61](libcurl_la-http2.o)
_on_header in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_submit_settings", referenced from:
_cf_h2_ctx_init in libcurl.a[61](libcurl_la-http2.o)
"_nghttp2_version", referenced from:
_Curl_http2_ver in libcurl.a[61](libcurl_la-http2.o)
ld: symbol(s) not found for architecture arm64
c++: error: linker command failed with exit code 1 (use -v to see invocation)
Похоже, что ошибка связана с тем, что libcurl не настроен и не собран правильно, но я использовал конфигурацию ниже
ExternalProject_Add(curl
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${CURL_DIR}
INSTALL_DIR ${THIRDPARTY_INSTALL_DIR}
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${CURL_DIR}/configure --prefix= --with-openssl --disable-openssl-auto-load-config --without-zlib --disable-ldap --without-nghttp2 --without-brotli --without-librtmp --without-libidn2 --host=arm-apple-darwin23
BUILD_COMMAND make
INSTALL_COMMAND make install)
ExternalProject_Add_Step(curl
fixinstallname
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -id "@rpath/libcurl.4.dylib" /lib/libcurl.4.dylib
DEPENDEES install)
add_dependencies(curl openssl zlib)
Здесь я создаю библиотеку Curl без ldap и http2, но даже после этого выдает связанную с этим ошибку. Пожалуйста, кто-нибудь помогите мне определить проблему.
Редактировать: Подробнее
Из-за комментариев Цыварева я проверил bcrypt lib на наличие проблемы, ссылка на библиотека приведена ниже
https://github.com/trusch/libbcrypt
и я обнаружил, что в нее внесены некоторые изменения lib от предыдущего разработчика, предыдущий разработчик добавил приведенный ниже код в Раздел public: файла Bcrypt.hpp для возможности вызова метода genrateSalt
static std::string generateSalt() {
char salt[BCRYPT_HASHSIZE];
int ret = bcrypt_gensalt(10, salt);
if(ret != 0)throw std::runtime_error{"bcrypt: can not generate salt"};
std::string saltString = salt;
return saltString;
}
и использование конфигурации для сборки libbcrypt
ExternalProject_Add(bcrypt
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${BCRYPT_DIR}
INSTALL_DIR ${THIRDPARTY_INSTALL_DIR}
BUILD_COMMAND make
CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=)
Редактирование 2: код cmake для связывания
target_link_libraries(
sdkrest
base64
utility
${JSONCPP_LIBRARY}
${CURL_LIBRARY}
${OPENSSL_LIBRARIES}
${ZLIB_LIBRARIES}
${DATADOG_LIBRARY}
${LEVELDB_LIBRARY}
${SHAMIR_LIBRARY}
${THRIFT_LIBRARY}
${SDKLO_LIBRARY}
${OPENTRACING_LIBRARY}
Threads::Threads
${CMAKE_DL_LIBS}
)
Я тоже пытался добавить выше
${CRYPT_LIB}
${LDAP_LIB}
${IDN2_LIB}
с приведенным ниже кодом
find_library(CRYPT_LIB crypt)
find_library(LDAP_LIB ldap)
find_library(IDN2_LIB idn2)
# Check if the libraries were found
if(NOT CRYPT_LIB)
message(FATAL_ERROR "libcrypt not found")
endif()
if(NOT LDAP_LIB)
message(FATAL_ERROR "libldap not found")
endif()
if(NOT IDN2_LIB)
message(FATAL_ERROR "libidn2 not found")
endif()
но получаю ошибку
CMake Error at CMakeLists.txt:183 (message):
libcrypt not found
Подробнее здесь: [url]https://stackoverflow.com/questions/79234250/undefined-symbols-for-architecture-arm64-bcrypt-gensalt[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия