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 ?
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é.
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.
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.
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 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.
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