Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/07/2007, 16h06   #1
Membre confirmé
 
Alexandre Petitjean
Ingénieur développement logiciels
Inscription : juin 2006
Messages : 280
Détails du profil
Informations personnelles :
Nom : Alexandre Petitjean
Âge : 30
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2006
Messages : 280
Points : 247
Points : 247
Par défaut [autotools] Ajout de sqlite3

Bonjour,

je construit un projet qui utilise une bibliothèque externe.
Je ne sais pas comment ajouter celle ci pour qu'elle soit prise en compte lors du make...
j'ai essayé les macro suivante dans le Makefile.am :
LDADD, LIBADD mais rien n'y fait...
J'ai la même erreur que si je compile directement mais sans le " -lsqlite3 "
c'est à dire :
Code :
1
2
3
4
5
6
7
8
9
 
g++ -g -O2 -o .libs/QtNem main.o  NemData/.libs/libnemdata.so DataConnect/.libs/libdataconnect.so Definitions/.libs/libdefinitions.so
DataConnect/.libs/libdataconnect.so: undefined reference to `sqlite3_close'
DataConnect/.libs/libdataconnect.so: undefined reference to `sqlite3_open'
DataConnect/.libs/libdataconnect.so: undefined reference to `sqlite3_errmsg'
DataConnect/.libs/libdataconnect.so: undefined reference to `sqlite3_get_table'
DataConnect/.libs/libdataconnect.so: undefined reference to `sqlite3_free_table'
DataConnect/.libs/libdataconnect.so: undefined reference to `sqlite3_free'
DataConnect/.libs/libdataconnect.so: undefined reference to `sqlite3_exec'
Comment ajouter une bibliothèque externe au processus autotools ??

D'avance merci
AlexandreP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2007, 18h39   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
Citation:
Envoyé par LeGars
Bonjour,

J'ai la même erreur que si je compile directement mais sans le " -lsqlite3 "

D'avance merci
donc ton probleme est un probleme de codage qui appelle en dur sqllite
commences par empecher cela..
apres tu pourras voir a (re)tester les autres erreurs. au fur et a meusure.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 17h13   #3
Membre confirmé
 
Alexandre Petitjean
Ingénieur développement logiciels
Inscription : juin 2006
Messages : 280
Détails du profil
Informations personnelles :
Nom : Alexandre Petitjean
Âge : 30
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2006
Messages : 280
Points : 247
Points : 247
Comment faire pour utiliser sqlite alors ?
Ce que je fais :

Dans le fichier entête qui crée ma connection :
Code :
1
2
3
4
5
6
7
8
 
#include <sqlite3.h>
...
// par exemple pour fermer une base : 
void CloseDB()
{
   sqlite3_close(db);
}
pour compiler (sans erreur) :
Code :
1
2
 
g++ main.cpp -lsqlite3
Je ne vois pas comment faire autrement ...
AlexandreP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 17h29   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
c'est toi pourtant qui dit je cide :
Citation:
J'ai la même erreur que si je compile directement mais sans le " -lsqlite3 "
alors ... j'ai pas du comprendre ta question ....

?

tu veux voir pourquoi ton code remonte une erreur avec ou sans usage de sqlite non ?
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 18h24   #5
Membre confirmé
 
Alexandre Petitjean
Ingénieur développement logiciels
Inscription : juin 2006
Messages : 280
Détails du profil
Informations personnelles :
Nom : Alexandre Petitjean
Âge : 30
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2006
Messages : 280
Points : 247
Points : 247
J'ai dû mal exprimer mon problème...
Mon code compile bien, je n'ai aucune erreur.
Pour cela j'utilise une longue ligne de commande type :
Code :
1
2
 
g++ libs/connection.cpp libs/datalayer.cpp tools/convert.cpp truc/biblio.o [...] -lsqlite3 -o application
C'est bien, mais pas pratique.
Je voudrais pouvoir lancer la série magique :
Code :
1
2
3
4
5
 
./configure
make
make install
application
Pour cela je regarde du coté des autotools.
Ca crée les fichiers qui vont bien à partir de fichiers de pré-configuration dans lesquels je renseigne les fichiers à compiler et où les trouver.
Comme j'utilise sqlite3, j'aimerais que lors de la compilation des fichiers utilisant cette bibliothèque, l'option "-lsqlite3" soit ajoutée.
Car pour le moment, l'option n'est pas ajoutée et j'ai l'erreur cité.

Je viens de relire le premier post, et effectivement, je n'étais pas très clair... désolé...

Et maintenant est ce plus clair ?
AlexandreP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 18h26   #6
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
ah il doit falloir ecrire un makefile alors je suppose....et surtout un script configure mais la ca depasse mes competances.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 18h59   #7
Membre confirmé
 
Alexandre Petitjean
Ingénieur développement logiciels
Inscription : juin 2006
Messages : 280
Détails du profil
Informations personnelles :
Nom : Alexandre Petitjean
Âge : 30
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2006
Messages : 280
Points : 247
Points : 247
justement l'écriture du configure et des Makefile se font via les autotools.
Si ça t'intéresse, tu peux toujours aller sur ce site pour comprendre le principe :
automake

C'est par là que j'ai commencé, mais je ne trouve rien pour les librairies externe...
AlexandreP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 19h37   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Pour autant que j'y ai touché, vous pouvez soit l'ajouter lors du script configure en modifiant les variables (LDFLAGS si j'ai bonne mémoire), ce qui serait global pour vos sources ou l'ajouter spécifiquement à un "répertoire" dans le fichier Makefile.am correspondant. Dans le dernier cas ça dépend de ce que vous compilez : un binaire (LDADD ou nombin_LDADD) ou une librairie (nomlib_la_LDFLAGS). Certaines librairies (gtk, glib, libxml2, libxslt) ont leur propres macros et définissent leurs propres variables (LDFLAGS & co), ce qui facilite le travail (je viens d'en trouver une pour sqlite3).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2007, 19h56   #9
Membre confirmé
 
Alexandre Petitjean
Ingénieur développement logiciels
Inscription : juin 2006
Messages : 280
Détails du profil
Informations personnelles :
Nom : Alexandre Petitjean
Âge : 30
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2006
Messages : 280
Points : 247
Points : 247
J'ai trouvé : il faut ajouter la commande complète !
Ce que je faisais dans mon Makefile.am :
Code :
libdataconnect_la_LDFLAGS = sqlite3
Ce qu'il faut mettre :
Code :
libdataconnect_la_LDFLAGS = -lsqlite3
le a son importance !

Merci pour les pistes.
Pour info, j'ai essayé rapidement le lien par julp, mais ça n'as pas fonctionné directement, Mais ça reste une piste plus qu'interessante pour savoir si une bibliothèque est présente ou non...
AlexandreP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 22h01   #10
Membre éclairé
 
Inscription : décembre 2006
Messages : 271
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : décembre 2006
Messages : 271
Points : 324
Points : 324
On peut aussi ajouter la directive dans configure.in ou configure.ac.

Code :
1
2
 
AC_CHECK_LIB(sqlite3, refresh, , AC_MSG_ERROR([Couldn't find sqlite3 library.]), -lsqlite3)

Puis lancer la commande :
autoreconf
(qui execute aclocal, autoheader, autoconf,automake)

L'avantage de cette méthode est que la bibilothèque est recherchée dans la commande configure et renvoie une erreur si elle n'est pas trouvée.

Un peu de doc : http://www.infres.enst.fr/~dax/polys...re/slide1.html
tamiel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h19.


 
 
 
 
Partenaires

Hébergement Web