[C] Connexion distante mysql - sans contrainte de librairies

Salut,

J’ai une appli en C qui doit se connecter a une bdd mySQL distante, j’ai surtout vu 2 solutions emergeantes: soit le client mysql est installe et on utilise ses librairies, soit on installe mysql++ et utilise ses libs too.

mon chti soucis est que mon appli va terminer dans systeme embarque et que ces 2 solutions sont fixes (pour mysql c sur, pour l’autre je crois), le linkage vers les librairies ou l’appli me rend tributaire de la machine.

me trompe-je quelquepart ? une autre solution pour se connecter a la database ?

Merci d’avance :jap:

SQlite ?

ça semble correspondre à mes attentes, je vais tester ça ce soir. :slight_smile:

Merci karl :jap:

Hum, j’ai parlé trop vite.
sqlite permet de créer et gérer sa bdd, mais il ne permet pas de se connecter à une autre database (pour moi mysql).

Je pige pas ton prob. Si tu utilises mySQL, tu charges libmySQL.dll, et tu en fournis une copie dans le dossier de l’executable si ya pas? non?

(je fais pas de .so, ou de dll donc je sais pas)

bah j’en sais rien, niveau lib je suis pas calé.

Je vais fouiller dans cette direction

Je pensais la même chose que Sans-Nom mais n’ayant jamais fait d’embarqué, je pensais dire une bêtise.
J’ai déja utilisé LibMySql++ et j’ai placé la dll à la raçine de l’éxécutable, aucun problème constaté.

Etant dans un environnement linux, je vais alors chercher le .so correspondant

Pour l’histoire de l’embarqué, j’aurais dû préciser que c’etait du linux

jg> ce que je te dis, c’est surtout ce que j’aurai fait en java, avec des jar (et donc class path, etc). Ca fonctionne pareil normalement que ce soit sous Linux ou Win.

Ouep.

Là je suis doublement paumé, je n’ai jamais utilisé de librairie dynamique et je dois générer un package debian :fou:

Si quelqu’un a une bonne doc sur l’utilisation des librairies, faut que je teste un truc simple, on verra plus tard pour integrer ça proprement dans le package

Bah en fait, tu n’as pas grand chose à faire, tu codes ton programmes, tu ajoutes la lib dans l’éditeur de lien (-lfoo pour libfoo.so par exemple) et basta.
Ton binaire demandera à ce que libfoo.so soit quelque part dans ton $PATH ou à la raçine de ton éxécutable.

ok :jap:

dernier point: une lib est toujours accompagnée d’un .h ?

Sous linux, ça reste un peu plus chiant (export LD_LIBRARY_PATH=xxx.so si j’ai bon souvenir).

Ce sont deux choses différentes donc pas forcément, exemple : tu as téléchargé un jeux qui utilise fmodex qui n’est pas fournis avec le jeux, il te faudra télécharger cette lib à part et tu n’auras besoin à aucun moment de l’entête.
Les entêtes ne servent que lorsque tu développes une application utilisation ce .so.

oui, je le voyais également dans ce sens.

maintenant faut que je le trouve ce satané .h, j’ai installé le package de devel pour mysql, il est bien caché :smiley:

Juste dans le dossier include de l’install mysql (sous win en tout cas)

Oui, je l’ai trouvé ensuite.
Par contre j’ai vu pas mal de dépendance vers d’autres fichiers .h qui eus aussi dépendent de etc… , comme le package libmysqlclient15-dev n’est pas porte sur ce systeme, ca va etre dur de creer une dependance

je dis peut-être une connerie mais ne pourrais-tu pas créer une librairie statique avec l’outil ar et ensuite compiler en statique comme ca les appels de fonctions faisant référence à la librairie serait directement dans l’exécutable (d’où un exécutable un peu plus gros)

par exemple:
ar rc libproj.a lib1.o lib2.o lib3.o
qui va te créer ta librairie statique libproj.a dans le répertoire courant. Ensuite tu peux compiler avec
gcc -static -o main main.o -L. lproj
bien sûr tu auras compilé ton main.c auparavant.

-L. dit de chercher la librairie dans le répertoire courant (donc à adapter au besoin)
-lproj c’est en fait le nom de ta librairie statique, si par exemple tu l’avais créé avec “ar rc libclubic.a clubic.o” il faudrait changer la ligne -lproj pour -lclubic.

En espérant avoir aidé un peu…

C’est tout à fait ça que je souhaite faire.
j’ai essayé d’y inclure la lib de mysqlclient, mais le compilo n’en a pas voulu car cette lib est compilé pour du x86, or l’archi cible est du ARM.
En gros il faudrait que je trouve ou recompile la lib de mysqlclient pour ARM

Je viens de dl la dernière version (la 5.0) et il y a un répertoire "Embedded" et dedans "DLL" et "Static", il semble donc que la dernière version correspond pile poile à ce que tu cherches :slight_smile: