View Full Version : [C] problema applicazione.C su mysql
Ciao, ho installato mysql da .tar.gz come indicato dal manuale ufficiale, cosi mi ritrovo le librerie al posto giusto ora il problema è compilare e usare un'applicazione scritta in C:
gcc -c -I/usr/local/mysql/include example.c
e mi compila il file oggetto
gcc -g -o example example.o -L/usr/local/mysql/lib -lmysqlclient -lz
e mi crea l'eseguibile example.
Però ora provo a lanciare ./example e mi ritrovo:
./example: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory
Perchè???
DanieleC88
10-05-2009, 19:03
Questa applicazione andava più nella sezione Linux che qui, ma vabbe'... :)
Il fatto è che /usr/local/lib al 99% non è incluso in /etc/ld.so.conf, e al caricamento dell'eseguibile non vengono trovati i simboli esterni necessari.
Aggiungilo e poi dai un ldconfig come superutente. :)
ho provato ma niente come prima... stesso errore...
DanieleC88
11-05-2009, 21:13
Eh no, se le librerie sono installate correttamente e hai fatto come ti ho detto, deve funzionare. :D
Ricapitoliamo:
prendi il tuo eseguibile, diciamo che è "./exe", e dai un "ldd ./exe" per controllare che tutti i riferimenti esterni siano risolti
se non lo sono, trova dove sono state installate le librerie richieste
aggiungi il percorso appena trovato ad /etc/ld.so.conf
lancia - come superutente - il comando "ldconfig"
torna al punto 1
ciao ;)
se dò quel comando ricevo:
ldd ./example
linux-gate.so.1 => (0xb809d000)
libmysqlclient.so.16 => not found
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7f29000)
/lib/ld-linux.so.2 (0xb809e000)
DanieleC88
12-05-2009, 18:46
libmysqlclient.so.16 => not found
Esattamente quello che dicevo. :)
La cosa è strana se hai aggiunto il percorso e rigenerato la cache, controlla che effettivamente il file esista nella cartella.
perchè mi fà cosi il file libmysqlclient.so.16 è dentro /usr/local/mysql/lib ma quando compilo mi continua a dire:
./ciao: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory
il file ld.so.con lo modificato aggiungendo il percorso ora è cosi formato:
include /etc/ld.so.conf.d/*.conf
include /usr/local/mysql/lib
Cosa posso fare per far funzionare queste applicazioni in C???????:muro:
DanieleC88
12-05-2009, 20:22
Azz, no, togli l'include della seconda riga (quello della prima riga va bene)... Poi lancia di nuovo ldconfig e vedrai che funzionerà perfettamente... ;)
in che riga c'è l'include????:confused:
OK grazie Mille ho risolto era solo da creare link simbolici nella cartella /usr/lib dei file libmysqlclient.so.16 e libmysqlclient.so
Grazie!!! :D
DanieleC88
13-05-2009, 17:50
Una soluzione abbastanza rozza, ma vabbe'... :D
Comunque era nella seconda riga, dovevi solo togliere "include" e avevi risolto.
ciao ciao ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.