URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2416
[ Назад ]

Исходное сообщение
"undefined reference to"

Отправлено Blackgrin , 23-Дек-03 12:32 
Приветствую Вас!
Есть программа:
#include
#include <mysql.h>
#include <string>
#include <fstream>
using namespace std;
using std::ios;
using std::cout;
using std::endl;
using std::ifstream;
MYSQL *conn;
void lofrfi() {
string ss[5000];
string tem,ll;
int f;
conn=mysql_init(NULL);
mysql_real_connect(conn,"localhost","root","","lanko",0,NULL,0);
if (mysql_query(conn,"Started")!=0) { cout <<"ERRRRRRR"; } ;
cout << "GO";
ifstream fin("access");
char ch;
fin.unsetf(ios::skipws);
f=0;
tem="";
while (!fin.eof()) {
fin >> ch;
if (ch=='\n'){
ss[f]=tem; cout << ss[f]; f++; tem="";} else { tem=tem+ch; }
}
fin.close(); mysql_close(conn); }
int main(int argc, char *argv[])
{ lofrfi();
return 0; }

Пытаюсь скомпелировать и получаю:
g++ -o trsrun trs.cpp -I'/usr/include/mysql'
trs.cpp:33:1: warning: no newline at end of file
/tmp/ccyhpOSR.o: In function `lofrfi()':
/tmp/ccyhpOSR.o(.text+0x10b): undefined reference to `mysql_init'
/tmp/ccyhpOSR.o(.text+0x138): undefined reference to `mysql_real_connect'
/tmp/ccyhpOSR.o(.text+0x14e): undefined reference to `mysql_query'
/tmp/ccyhpOSR.o(.text+0x31c): undefined reference to `mysql_close'
collect2: ld returned 1 exit status
и Что с ним делать в упор не знаю :( ПОиском пробывал пользоваться наткнулся на такое, когда пипл пытался скомпилировать не с++шным а просто сишным компилятором свои программы использующие с++шные операции... А с этим ничего не нашел...
Заранее благодарю!


Содержание

Сообщения в этом обсуждении
"undefined reference to"
Отправлено XMan , 23-Дек-03 14:56 
Ну добавил бы какой-нибудь "-lmysqlclient". Тебе ж линкер ругается, который не может найти эти четыре функции ни в одной подключаемой библиотеке (не заголовочном файле [.h], а аименно библиотеке [lib.....so]).
Правильно делает, между прочим - ты ж либу mysql не подключаешь :)

"undefined reference to"
Отправлено Blackgrin , 23-Дек-03 15:30 
Нашел файлик: libmysqlclient.a
Как я понял это чтот типа архива...
в архиве еще был файлик: libmysql.o
Я и тот и второй попереписывал в
/usr/include
/usr/include/mysql
/usr/include/c++/3.2
Компилирую:
g++ -o trsrun trs.cpp -I'/usr/include/mysql' -libmysqlclient или
g++ -o trsrun trs.cpp -I'/usr/include/mysql' -libmysqlclient.a
trs.cpp:33:1: warning: no newline at end of file
/usr/bin/ld: cannot find -libmysqlclient.a
collect2: ld returned 1 exit status

А когда сделал:
g++ -o trsrun trs.cpp -I'/usr/include/mysql' libmysqlclient.a
trs.cpp:33:1: warning: no newline at end of file
libmysqlclient.a(my_compress.o): In function `my_compress_alloc':
my_compress.o(.text+0xb4): undefined reference to `compress'
libmysqlclient.a(my_compress.o): In function `my_uncompress':
my_compress.o(.text+0x12a): undefined reference to `uncompress'
collect2: ld returned 1 exit status

Появились новые вопросы ;)
>Ну добавил бы какой-нибудь "-lmysqlclient". Тебе ж линкер ругается, который не может
>найти эти четыре функции ни в одной подключаемой библиотеке (не заголовочном
>файле [.h], а аименно библиотеке [lib.....so]).
>Правильно делает, между прочим - ты ж либу mysql не подключаешь :)
>



"undefined reference to"
Отправлено solov , 23-Дек-03 16:52 
Проблема в том, что ты подключаеш только заголовчные файлы
-I/usr/include/mysql , а надо еще библиотеку -L/usr/.../ -lmysqlclient

#g++ -o trsrun trs.cpp -I'/usr/include/mysql' -L/usr/.../ -libmysqlclient


"undefined reference to"
Отправлено XMan , 23-Дек-03 21:59 
Гм. А, типа, то что я написал "-lmysqlclient", а ты "-libmysqlclient" ни о чем не говорит ? :)
Я так понимаю, у тебя где-то должен валяться "libmysqlclient.so".

"undefined reference to"
Отправлено solov , 23-Дек-03 17:04 
если сообщение compres или uncompress тогда добавить ключ -lz или -lgz чтобы линкер знал что ему надо библиотеку компримирования искать zlib

>g++ -o trsrun trs.cpp -I'/usr/include/mysql' -L/usr/.../ -lmysqlclient -lz