Bonsoir,
Suit à un poste sur la recherche de comment trouver la résolution d'une image, on m'a conseillé la librairie Devil, qui je dois dire comblemais attentes mais voilà, au moment de linker le tout dans mon makefile et d'utiliser le make
j'ai comme erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [root@localhost Labyrinte]# make gcc -o Labyrinthe.out main.o sprite.o graphique.o game.o plateau.o menu.o -Wl,--rpath -Wl,LIBDIR -LLIBDIR `sdl-config --cflags` `sdl-config -libs` -lSDL_image Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs] [--static-libs] sprite.o(.text+0x1d): In function `CreateSprite': /home/Zeft/Desktop/Labyrinte/sprite.c:34: undefined reference to `ilInit' sprite.o(.text+0x1c7):/home/Zeft/Desktop/Labyrinte/sprite.c:73: undefined reference to `ilLoadImage' sprite.o(.text+0x1fd):/home/Zeft/Desktop/Labyrinte/sprite.c:77: undefined reference to `iluGetImageInfo' collect2: ld a retourné 1 code d'état d'exécution make: *** [Labyrinthe.out] Erreur 1
Ce qui veut dire, si je ne me trompe pas, qu'au moment de linker il ne trouve pas la librairie.
Pour mon makefile, celà donne :
Donc j'ai bien rajouter la ligne qu'il demande lors de l'installation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 OBJ = main.o sprite.o graphique.o game.o plateau.o menu.o OPTS = -Wall -Werror -g MAIN = main.c main.h graphique.h sprite.h menu.h GRAPHIQUE = graphique.c graphique.h main.h sprite.h SPRITE = sprite.c sprite.h main.h graphique.h PLATEAU = plateau.c plateau.h sprite.h main.h graphique.h GAME = game.c game.h plateau.h sprite.h main.h graphique.h MENU = menu.c game.h plateau.h sprite.h main.h graphique.h menu.h Labyrinthe.out : $(OBJ) gcc -o Labyrinthe.out $(OBJ) -Wl,--rpath -Wl,LIBDIR -LLIBDIR `sdl-config --cflags` `sdl-config -libs` -lSDL_image main.o : $(MAIN) gcc -c main.c $(OPTS) sprite.o : $(SPRITE) gcc -c sprite.c $(OPTS) graphique.o : $(GRAPHIQUE) gcc -c graphique.c $(OPTS) game.o : $(GAME) gcc -c game.c $(OPTS) plateau.o : $(PLATEAU) gcc -c plateau.c $(OPTS) menu.o : $(MENU) gcc -c menu.c $(OPTS) clean : rm -f *.out *~ *o
J'en arrive à me demander si ce n'est pas un problème de path mais je suis vraiment nul pour celà sous linux :s----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
Autre chose lors de l'installation à la fin je tombe sur :
Est ce une erreur d'installation ?make[3]: Rien à faire pour « install-data-am ».
make[3]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/src-ILUT/src'
make[2]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/src-ILUT/src'
make[2]: Entering directory `/root/Desktop/Devil/DevIL-1.6.7/src-ILUT'
make[3]: Entering directory `/root/Desktop/Devil/DevIL-1.6.7/src-ILUT'
make[3]: Rien à faire pour « install-exec-am ».
make[3]: Rien à faire pour « install-data-am ».
make[3]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/src-ILUT'
make[2]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/src-ILUT'
make[1]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/src-ILUT'
Making install in include
make[1]: Entering directory `/root/Desktop/Devil/DevIL-1.6.7/include'
Making install in IL
make[2]: Entering directory `/root/Desktop/Devil/DevIL-1.6.7/include/IL'
make[3]: Entering directory `/root/Desktop/Devil/DevIL-1.6.7/include/IL'
make[3]: Rien à faire pour « install-exec-am ».
test -z "/usr/local/include/IL" || mkdir -p -- . "/usr/local/include/IL"
/usr/bin/install -c -m 644 'il.h' '/usr/local/include/IL/il.h'
/usr/bin/install -c -m 644 'ilu.h' '/usr/local/include/IL/ilu.h'
/usr/bin/install -c -m 644 'ilut.h' '/usr/local/include/IL/ilut.h'
/usr/bin/install -c -m 644 'il_wrap.h' '/usr/local/include/IL/il_wrap.h'
/usr/bin/install -c -m 644 'config.h' '/usr/local/include/IL/config.h'
/usr/bin/install -c -m 644 'devil_internal_exports.h' '/usr/local/include/IL/devil_internal_exports.h'
/usr/bin/install -c -m 644 'ilu_region.h' '/usr/local/include/IL/ilu_region.h'
make[3]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/include/IL'
make[2]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/include/IL'
make[2]: Entering directory `/root/Desktop/Devil/DevIL-1.6.7/include'
make[3]: Entering directory `/root/Desktop/Devil/DevIL-1.6.7/include'
make[3]: Rien à faire pour « install-exec-am ».
make[3]: Rien à faire pour « install-data-am ».
make[3]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/include'
make[2]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/include'
make[1]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7/include'
make[1]: Entering directory `/root/Desktop/Devil/DevIL-1.6.7'
make[2]: Entering directory `/root/Desktop/Devil/DevIL-1.6.7'
make[2]: Rien à faire pour « install-exec-am ».
make[2]: Rien à faire pour « install-data-am ».
make[2]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7'
make[1]: Leaving directory `/root/Desktop/Devil/DevIL-1.6.7'
Si oui comment la résoudre ce problème ?
Et pourquoi me dit il que la librairie est bien installé (ps : je suis allé dans le dossier et il y a effectivement les fichier.so).
Merci d'avance.
Partager