2015-05-12 6 views
1

Я пытался создать свое приложение в 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() 
+1

Почему вы ссылаетесь на статическую библиотеку libmysqlclient_r? – hank

+0

, в какую библиотеку я должен ссылаться в файле cmake? – jerry

+1

Я полагаю, вы должны добавить 'link_directories (/ usr/lib64/mysql)' перед 'add_library', а затем' target_link_libraries (myapp mysqlclient_r) ' – hank

ответ

0

Put @hank «s комментарий как ответ

Я полагаю, вы должны добавить link_directories (/ USR/lib64/MySQL) до add_library, а затем target_link_libraries (MyApp mysqlclient_r) - моток 12 мая в 12:50