Cmake не может найти mysqlclient.so

Здесь находится mysqlclient.so

[dbn@hecs-137331 mysql]$ pwd
/usr/lib64/mysql
[dbn@hecs-137331 mysql]$ ls
INFO_BIN  libmysqlclient.so  libmysqlclient.so.21       plugin
INFO_SRC  libmysqlClient.so  libmysqlclient.so.21.1.26

И вот как мой CMakeLists.txt включает библиотеку

target_include_directories(main PUBLIC "usr/lib64/mysql")
include_directories("usr/lib64/mysql")                               
target_link_libraries(main mysqlclient)

Это сообщение об ошибке

[dbn@hecs-137331 build]$ make
[ 14%] Built target zlog
[ 23%] Built target buffer
[ 47%] Built target http
[ 61%] Built target pool
[ 80%] Built target server
[ 90%] Built target timer
[ 95%] Linking CXX executable bin/main
/usr/bin/ld: cannot find -lmysqlclient
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/main.dir/build.make:109: bin/main] Error 1
make[1]: *** [CMakeFiles/Makefile2:213: CMakeFiles/main.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

Я просто устанавливаю mysql с помощью «sudo yum install mysql», поэтому нет файла с именем «mysqlConfig.cmake», и я не использую find_package

В настоящее время, link_directories("usr/lib64/mysql")target_link_libraries(main mysqlclient)link_directories("usr/lib64/mysql") все вышеперечисленное не может найти libmysqlclient.so и показать сообщение /usr/bin/ld: cannot find -lmysqlclient

И я также попытался скопировать библиотеку в каталог /usr/bin. Это тоже не работает.

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я почти уверен, что вы хотели использовать link_directories где-то там. И этот путь является абсолютным путем, поэтому он должен начинаться с косой черты. Бывший. link_directories("/usr/lib64/mysql").

Кроме того, я не вижу смысла в ваших *_include_directories вызовах команд, так как из вашего ls вывода не похоже, что там есть что-то, что вы хотели бы #include.

Примечание. Я не уверен, что это хорошая идея — жестко задавать машинно-зависимые пути в конфигурации проекта CMake.

Другие вопросы по теме