Я пытался создать свое приложение в Linux с помощью mysql c api и получил эту ошибку на этапе ссылки, он отлично работает на окнах. Пожалуйста, помогите, спасибо!версия узла не найден для символа mysql_select_db @ libmysqlclient_16
сообщениеошибка:
/bin/ld: myapp.so : version node not found for symbol [email protected]_16
/bin/ld: failed to set dynamic section sizes: Bad value
ОС: CentOS 7, 64-разрядная, (VM на виртуальном поле)
Mysql: 5.6.24 (Community Edition, установленный с помощью ням)
.bashrc файл
export LIBMYSQL_INCLUDE_DIR=/usr/include/mysql
export LIBMYSQL_LIBRARY=/usr/lib64/mysql
export LD_LIBRARY_PATH=/usr/lib64/mysql:$LD_LIBRARY_PATH
Cmake файл: (переменные устанавливаются в соответствии с переменными окружения)
FILE(GLOB SRC_MYAPP myapp/*.c myapp/*.h)
INCLUDE_DIRECTORIES(${LIBMYSQL_INCLUDE_DIR})
ADD_LIBRARY(myapp ${SRC_MYAPP})
IF (MSVC_IDE)
TARGET_LINK_LIBRARIES(myapp ${LIBMYSQL_LIBRARY}/libmysql)
ELSE()
TARGET_LINK_LIBRARIES(myapp ${LIBMYSQL_LIBRARY}/libmysqlclient_r.a)
ENDIF()
Почему вы ссылаетесь на статическую библиотеку libmysqlclient_r? – hank
, в какую библиотеку я должен ссылаться в файле cmake? – jerry
Я полагаю, вы должны добавить 'link_directories (/ usr/lib64/mysql)' перед 'add_library', а затем' target_link_libraries (myapp mysqlclient_r) ' – hank