Chcę połączyć się z bazą danych mysql z C++ w Linuksie. Na moim komputerze lokalnym używam Ubuntu i zainstalowaniu serwera i klienta pakiety mysql:Konfigurowanie Mysql ++ w Linuksie
sudo apt-get install mysql-server mysql-client
natknąłem Mysql++ ale mają pewne problemy podczas uruchamiania ./configure z ich pakietu binarnego. Błąd mówi:
checking for MySQL library directory... configure: error: Didn't find mysqlclient library in '/usr/lib64 /usr/lib /usr/lib64/mysql /usr/lib/mysql /usr/local/lib64 /usr/local/lib /usr/local/lib/mysql /usr/local/mysql/lib /usr/local/mysql/lib/mysql /usr/mysql/lib/mysql /opt/mysql/lib /opt/mysql/lib/mysql /sw/lib /sw/lib/mysql'
widzę gdzie mogę użyć tego polecenia, aby określić ścieżkę:
./configure --with-mysql-lib=/...
ale nie wiem gdzie go do punktu. Użyłem whereis mysql, ale nie mogę znaleźć żadnego katalogu mysql, który zawiera podkatalog lib. Gdzie zostałyby zainstalowane biblioteki mysqlclient?
EDIT:
Po wykonaniu zlokalizować libmysqlclient
wróciłem
/usr/lib/i386-linux-gnu/libmysqlclient.so.18
/usr/lib/i386-linux-gnu/libmysqlclient.so.18.0.0
/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18
/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18.0.0
/usr/share/doc/libmysqlclient18
/usr/share/doc/libmysqlclient18/changelog.Debian.gz
/usr/share/doc/libmysqlclient18/copyright
/var/cache/apt/archives/libmysqlclient18_5.5.22-0ubuntu1_i386.deb
/var/lib/dpkg/info/libmysqlclient18:i386.list
/var/lib/dpkg/info/libmysqlclient18:i386.md5sums
/var/lib/dpkg/info/libmysqlclient18:i386.postinst
/var/lib/dpkg/info/libmysqlclient18:i386.postrm
/var/lib/dpkg/info/libmysqlclient18:i386.shlibs
Więc starałem ./configure --with-mysql-lib=/usr/lib/i386-linux-gnu
i wydaje się, aby zakończyć bez narzekania.
Chociaż rozwiązuje to problem z uzyskaniem pliku ./configure, nadal mam dalsze problemy. Kiedy uruchamiam make
wszystko pójdzie dobrze do tego momentu:
In file included from ./lib/sql_buffer.h:31:0, from ./lib/sql_buffer.cpp:26: ./lib/refcounted.h:258:2: error: ‘size_t’ does not name a type ./lib/refcounted.h: In constructor ‘mysqlpp::RefCountedPointer::RefCountedPointer()’: ./lib/refcounted.h:89:2: error: class ‘mysqlpp::RefCountedPointer’ does not have any field named ‘refs_’ ./lib/refcounted.h: In constructor ‘mysqlpp::RefCountedPointer::RefCountedPointer(T*)’: ./lib/refcounted.h:100:2: error: class ‘mysqlpp::RefCountedPointer’ does not have any field named ‘refs_’ ./lib/refcounted.h:104:4: error: ‘refs_’ was not declared in this scope ./lib/refcounted.h:104:16: error: expected type-specifier before ‘size_t’ ./lib/refcounted.h:104:16: error: expected ‘;’ before ‘size_t’ ./lib/refcounted.h: In constructor ‘mysqlpp::RefCountedPointer::RefCountedPointer(const ThisType&)’: ./lib/refcounted.h:112:2: error: class ‘mysqlpp::RefCountedPointer’ does not have any field named ‘refs_’ ./lib/refcounted.h:115:8: error: ‘refs_’ was not declared in this scope ./lib/refcounted.h: In destructor ‘mysqlpp::RefCountedPointer::~RefCountedPointer()’: ./lib/refcounted.h:125:7: error: ‘refs_’ was not declared in this scope ./lib/refcounted.h: In member function ‘void mysqlpp::RefCountedPointer::swap(mysqlpp::RefCountedPointer::ThisType&)’: ./lib/refcounted.h:246:13: error: ‘refs_’ was not declared in this scope make: *** [mysqlpp_sql_buffer.o] Error 1
nie jestem obeznany z C++, więc nie jestem pewien, co dokładnie oznacza błąd. Jakąkolwiek pomoc lub wskazówki dotyczące tego, jak uzyskać konfigurację Mysql ++ od tego momentu, będzie to bardzo cenne. Chociaż, przyznaję, że zaczynam także szukać alternatywnych bibliotek do wykorzystania.
Wow, dzięki za poświęcenie czasu na napisanie tego. Skończyło się na tym, że byłem sfrustrowany i użyłem MYSQL C api bezpośrednio Ale jestem pewien, że twoje rozwiązanie pomoże tym, którzy również mają ten problem w przyszłości! – Aaron
Wybrałem tę ścieżkę również pierwotnie, ALE nie mogłem złapać błędów mysql (jak próba wstawienia duplikatu klucza) i to spowodowałoby, że mój program zostałby przerwany, więc poszedłem za przykładem miejsca, w którym się opuściłeś (skorzystałem z rozwiązania z kroku 1 [lokalizacja plików lib]). –