Bonjour,

Je souhaiterai compiler la version "git" de sigrok (http://sigrok.org/) en locale et à coté de la version disponible dans les dépôts (F18).

Pour cela j'ai plusieurs objets à compiler :
- libsigrok
- libsigrokdecode
- PulseView

Pour la premiere bibliothéque, ca roule.

La compilation se fait avec un
./autogen.sh
./configure
make
make install prefix=/datatux/Laurent/test_zone/SIGROK/pulseview-0.1.0/siglib/
Pour la seconde, j'au un probléme de concurrence entre le bibliothéque libsigrok déjà installée et celle compilée.

La compilation se fait de la même facon que la premiére bibliothéque, mais je ne sais pas comment passer le chemin local.

Si je fais un
./configure --help
J'obtiens en particulier, ce qui semble pouvoir resoudre mon probléme :
  libsigrok_CFLAGS
              C compiler flags for libsigrok, overriding pkg-config
  libsigrok_LIBS
              linker flags for libsigrok, overriding pkg-config
Mais je n'ai pas compris comment les utliser

Ensuite, je vais avoir le même souci avec pulseview qui se compile avec
cmake -DENABLE_DECODE=y
  make
Si vous pouvez me guider, cela serai bien cool, merci d'avance.
Bonjour,

C'est peut-être pas hyper propre mais tu dois pouvoir résoudre ton problème en modifiant temporairement ton PATH:
export PATH=<REPERTOIRE_QUI_VA_BIEN>:$PATH
Sinon tu copie ta nouvelle lib dans ton répertoire de compile.

a+
Dans ce qui suit, <prefix> doit être remplacé par le celui le prefix actual, à priori identique pour les trois projet que tu veux compiler.

Avant chaque utilisation/compilation, la première chose à faire, c'est de dire à ton système où aller chercher le bilibliothèques/includes/executables. Les plus courants :
export PATH="<prefix>/bin:$PATH"
export LD_LIBRARY_PATH="<prefix>/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="<prefix>/lib/pkgconfig:$PKG_CONFIG_PATH"
Une fois cela fait, la suite devrait fonctionner de façon transparente, comme tu l'as fait. Le prefix est traditionnellement passé en argument de ./autogen.sh ou de ./configure (--prefix=<prefix>) à la place de make install. Pour cmake :
cmake -DCMAKE_INSTALL_PREFIX=<prefix> 
ou même dans ton cas :
cmake -DCMAKE_INSTALL_PREFIX=<prefix> -DENABLE_DECODE=y 
Tu n'as pas besoin de toucher à libsigrok_FOOBAR. Si tu as des problèmes, vérifie bien que les variables d'environnements contiennent bien ton prefix en faisant par exemple pour PATH (mais s'applique aussi pour les autres) :
echo $PATH
EDIT: Si les projets n'utilisent pas pkg-config, tu auras surement des problèmes... Dis nous
Merci du coup de main.
Voici le retour :

On commence par :
export PATH="/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/bin:$PATH"
export LD_LIBRARY_PATH="/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/lib/pkgconfig:$PKG_CONFIG_PATH"

On contrôle :
echo $PATH
/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/home/laurent/bin

echo $LD_LIBRARY_PATH
/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/lib:

echo $PKG_CONFIG_PATH
/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/lib/pkgconfig:

Cela semble normal.


La compilation de la bibliothéque :
git clone git://sigrok.org/libsigrokdecode
cd libsigrokdecode/

./autogen.sh
./configure prefix=/datatux/Laurent/test_zone/SIGROK/pulseview-0.1.0/siglib/
make
Dans la console, on a :
Making all in tests
  CC       runtc-runtc.o
runtc.c: In function ‘sr_cb’:
runtc.c:294:5: attention : passing argument 2 of ‘sr_config_get’ makes integer from pointer without a cast [enabled by default]
In file included from /usr/include/libsigrok/libsigrok.h:864:0,
                 from runtc.c:21:
/usr/include/libsigrok/proto.h:73:12: note: expected ‘int’ but argument is of type ‘const struct sr_dev_inst *’
runtc.c:294:5: attention : passing argument 4 of ‘sr_config_get’ makes pointer from integer without a cast [enabled by default]
In file included from /usr/include/libsigrok/libsigrok.h:864:0,
                 from runtc.c:21:
/usr/include/libsigrok/proto.h:73:12: note: expected ‘const struct sr_dev_inst *’ but argument is of type ‘int’
runtc.c:294:5: erreur: too many arguments to function ‘sr_config_get’
In file included from /usr/include/libsigrok/libsigrok.h:864:0,
                 from runtc.c:21:
/usr/include/libsigrok/proto.h:73:12: note: declared here
make[2]: *** [runtc-runtc.o] Erreur 1
make[1]: *** [all-recursive] Erreur 1
make: *** [all] Erreur 2
Et paf, c'est la bibliothéque installée (/usr/include/libsigrok/libsigrok.h) via le dépôt qui joue pour la compilation.

Les erreurs sont probablement dues à la mauvaise version de bibliothéque.
C'est ce que je craignais, il manque donc les variables d'environnements suivantes : C_INCLUDE_PATH et CPLUS_INCLUDE_PATH, qui doivent pointer toutes les deux vers <prefix>/include (de la même manière que PATH, LD_LIBRARY_PATH et les autres)

et l'argument à utiliser pour le script ./configure est --prefix=<prefix> (avec les --)
Hello,

J'ai fais les ajouts et la correction et c'est cool pour libsigrokdecode.

Un resumé pour etre clair :
export PATH="/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/bin:$PATH"
export LD_LIBRARY_PATH="/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/lib/pkgconfig:$PKG_CONFIG_PATH"
export C_INCLUDE_PATH="/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/include:$C_INCLUDE_PATH"
export CPLUS_INCLUDE_PATH="/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/include:$CPLUS_INCLUDE_PATH"
le controle :
echo $PATH
/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/home/laurent/bin
echo $LD_LIBRARY_PATH
/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/lib:
echo $PKG_CONFIG_PATH
/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/lib/pkgconfig:
echo $C_INCLUDE_PATH
/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/bin:
echo $CPLUS_INCLUDE_PATH
/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib/bin:
un espace propre et la compilation :
git clone git://sigrok.org/libsigrokdecode
cd libsigrokdecode/

./autogen.sh
./configure --prefix=/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib
make
make install
Maintenant reste pulseview .
Mais je viens d'entendre "T'es pret papa !" donc je vais finir un peu plus tard.
Merci pour ce pas en avnat et à bientôt pour la suite.
Maintenant compilation du dernier morceau :
cd pulseview/
cmake -DCMAKE_INSTALL_PREFIX=/datatux/Laurent/test_zone/SIGROK-git/pulseview/siglib DENABLE_DECODE=y
make
make install
pulseview
Et hop ca marche, trop cool.

Jypaigue, as tu une recommandation de lecture sur le sujet et merci pour ton aide.
si tu as oublié le "-" devant le DENABLE_FOO, ça n'a probablement pas fonctionné comme tu l'aurais voulu...

De la lecture ? Pas de conseil particulier. C'est généralement au cas par cas. Dans le désordre, tu peux te renseigner sur les choses suivantes :

- Qu'est ce qu'une variable d'environnement ? Comment sont-elles gérées ? Quelle durée de vie ? qu'est-ce que .bashrc, que fait la commande "source", ...
- Que font chacune des variables d'environnements utilisées ? Cela devrait t'obliger à te renseigner sur ce qu'est un header, une bibliothèque statique, dynamique, comment se déroule la compilation d'un projet C/C++, et plein d'autres choses...
- Comment est-il possible d'avoir plusieurs versions d'un même projet/bibliothèque sur une même machine ?
- Qu'est-ce qu'un outil de build ? Qu'est-ce que cmake comparé à make, qu'est-ce qu'autotools ? Etc...

Bien sur, tout cela représente énormément d'informations. Et ça n'a que peu d'intérêt si tu n'en as pas l'usage, ormis pour ta culture générale.

Et n'oublie pas de passer le thread en "résolu"