не могу найти -lmysqlclient - PullRequest
       6

не могу найти -lmysqlclient

9 голосов
/ 16 ноября 2010

Я пытаюсь скомпилировать программу на C ++, и один из классов использует.g ++ не может найти библиотеки, я думаю.Команда, которую я использую для компиляции: -

g++ c1.cpp c2.cpp c3.cpp c4.cpp -o c4 -lm -lmysqlclient

c3.cpp - это файл, который требует mysql.h.Это отлично работает на моей локальной машине, но отказывается запускаться на сервере с ошибкой

cannot find -lmysqlclient

Я попытался найти файлы libmysqlclient.so на сервере с помощью команды findЯ не думаю, что они присутствуют там

uname -a

показывает

SunOS opteron 5.10 Generic_139556-08 i86pc i386 i86pc
user@opteron 12:26:02 ~/c++/projname/

Я понимаю, что мне нужно связать некоторые библиотеки, но где и как?

Любая помощь будет оценена.Благодаря.

Ответы [ 4 ]

9 голосов
/ 04 апреля 2016

Независимо от того, какие библиотечные пакеты, по вашему мнению, не установлены, можно установить с помощью sudo apt-get install. Но проблема в том, чтобы найти правильное имя пакета, который может понять apt-get. Так как это сделать ?! простой

использовать команду: sudo apt-cache search <filename>

Например: в этом случае lmysqlclient

sudo apt-cache search mysqlclient

(не забудьте исключить 'l' из фактического имени, то есть mysqlclient, а не lmysqlclient). Это выводит:

libmysqlclient-dev - MySQL database development files

В приведенном выше -libmysqlclient-dev - это имя, которое apt-get может распознать и решить нашу cannot find lmysqlclient проблему

так что теперь введите: sudo apt-get install libmysqlclient-dev из интерфейса. После этого попробуйте создать нужный файл.

2 голосов
/ 06 июня 2018

Упрощение ответа @SriHariY.S-

Попробуйте установить его с sudo apt-get install libmysqlclient-dev.

2 голосов
/ 17 ноября 2010

Есть ли у вас клиентские библиотеки MySQL?Можете ли вы искать его как

find / -name "libmysqlclient.so" -type f -print 2>/dev/null

Кроме того, вы можете использовать флаг -R на компоновщике, чтобы жестко связать libmysqlclient как

g++ -R/usr/local/mysql/lib ....

Или вы можете экспортировать LD_LIBRARY_PATH_32или LD_LIBRARY_PATH_64 как

export LD_LIBRARY_PATH_32=$MYSQL_HOME/lib

Урко,

0 голосов
/ 24 января 2019

В Ubuntu 18 я использовал эту команду, чтобы найти имя необходимого пакета для исправления этой ошибки:

apt search lmysqlclient

После этого я установил недостающий пакет:

sudo apt install libmariadbclient-dev-compat
...