2013-12-06 3 views
1


как и многие другие У меня возникла проблема с компиляцией программы, включая mysqlpp.
mysqlpp, кажется, установлен правильно, пути библиотеки правильно установлены в /etc/ld.so.conf также и известны (так я думаю):ошибка ссылки в mysqlpp

$ sudo ldconfig -p | grep mysql 
libmysqlpp.so.3 (libc6,x86-64) => /usr/local/lib/libmysqlpp.so.3 
libmysqlpp.so (libc6,x86-64) => /usr/local/lib/libmysqlpp.so 
libmysqlclient.so.18 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 
libmysqlclient.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libmysqlclient.so 

Но что-то кажется неправильным, компилятор не находит библиотеку mysqlpp.
Команда Связь-компилятор:

/usr/bin/c++ -lm -L/usr/lib -L/usr/lib/x86_64-linux-gnu/ -lmysqlclient -lmysqlpp -o myprogram myprogram.o 

сообщения об ошибке, что ссылки mysqlpp отсутствуют (у многих других недостающих ссылок):

/usr/local/include/mysql++/row.h:328: undefined reference to `mysqlpp::Row::at(unsigned long) const' 
myprogram.o: In function `mysqlpp::StoreQueryResult::operator=(mysqlpp::StoreQueryResult const&)': 
/usr/local/include/mysql++/result.h:252: undefined reference to `mysqlpp::StoreQueryResult::copy(mysqlpp::StoreQueryResult const&)' 
myprogram.o: In function `long mysqlpp::String::do_conv<long>(char const*) const': 
/usr/local/include/mysql++/mystring.h:615: undefined reference to `mysqlpp::String::length() const' 
/usr/local/include/mysql++/mystring.h:615: undefined reference to `mysqlpp::String::data() const' 
collect2: ld returned 1 exit status 

Я в конце моего остроумия. Возможно, кто-то из вас может мне помочь. Благодаря!!

ответ

0

Линкер ищет зависимости в обратном порядке, поэтому вам необходимо поместить библиотеки после файлов объектов (или источников) в командной строке.

$ c++ myprogram.o -o myprogram -lm -L/usr/lib -L/usr/lib/x86_64-linux-gnu/ -lmysqlclient -lmysqlpp 
+0

oh мой .. такая простая причина! да, действительно, ваш намек решил мою проблему. Благодаря! – Sprotti