Forum Programmation.c++ /usr/lib/libGL.so n'existe pas ???

Posté par  (site web personnel) .
Étiquettes : aucune
0
25
oct.
2004
J'ai un petit problème: g++ me dit que /usr/lib/libGL.so n'existe pas alors que c'est pourtant le cas ...
Voici ce que ca donne:

mildred@louve:~/Projects/demo01 $ make
make all-recursive
make[1]: entrant dans le répertoire « /home/mildred/Projects/demo01 »
Making all in src
make[2]: entrant dans le répertoire « /home/mildred/Projects/demo01/src »
/bin/sh ../libtool --mode=link g++ -g -o demo01 -L/home/mildred/Projects/lib/irrlicht main.o -lIrrlicht -lXxf86vm -lXext -lGL -lX11 -lz -ljpeg
g++ -g -o demo01 main.o -L/home/mildred/Projects/lib/irrlicht -lIrrlicht -lXxf86vm -lXext /usr/lib/libGL.so -lX11 -lz -ljpeg
g++: /usr/lib/libGL.so: No such file or directory
make[2]: *** [demo01] Erreur 1
make[2]: quittant le répertoire « /home/mildred/Projects/demo01/src »
make[1]: *** [all-recursive] Erreur 1
make[1]: quittant le répertoire « /home/mildred/Projects/demo01 »
make: *** [all-recursive-am] Erreur 2
mildred@louve:~/Projects/demo01 $ whereis libGL.so
libGL: /usr/lib/libGL.a /usr/lib/libGL.la /usr/lib/libGL.so

Comment cela est possible ???

Pour l'histoire, je compile un petit HelloWorld avec la bibliothèque Irrlicht (moteur 3D) que je lie statiquement
J'ai mis du temps à comprendre que je devais indiquer à mon IDE (Anjuta) de lier avec les bibliotheques nécessaires à Irrlicht.

En passant, je tiens à dire que je trouve autoconf/automake très compliqué à comprendre et surtout à mettre en oeuvre. Je ne comprends pas pourquoi je devrais lancer un ./configure qui prend 45 secondes à s'executer pour un simple HelloWorld de 30 lignes ...
Alors qu'avec un Makefile beaucoup plus simple (une ligne) c'est presque immédiat (enfin, je viens de tester et il y a aussi une erreur)

Pour info, voici le contenu de main.cc:
// Created by Anjuta version 1.2.2
// This file will not be overwritten

#include <stdio.h>
#include <irrlicht.h>

#define DRIVER EDT_OPENGL
// EDT_SOFTWARE
// EDT_NULL
// EDT_DIRECTX8
// EDT_OPENGL
#define WINDOW_X 512
#define WINDOW_Y 384
#define COLOR_DEPTH 16
// 16
// 32
#define FULLSCREEN false
#define STBF_SHADOWS true
#define VSYNC false
// only if fullscreen at true
#define WELCOME_TEXT L"Hello World! This is the Irrlicht Software engine!"


using namespace irr;

using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

int
main ()
{
IrrlichtDevice *device =
createDevice (DRIVER,
dimension2d < s32 > (WINDOW_X, WINDOW_Y),
COLOR_DEPTH, FULLSCREEN, STBF_SHADOWS, VSYNC,
0);
/*
device->setWindowCaption (L"My first 3D Application - Irrlicht");
IVideoDriver *driver = device->getVideoDriver ();
ISceneManager *smgr = device->getSceneManager ();
IGUIEnvironment *guienv = device->getGUIEnvironment ();
guienv->addStaticText (WELCOME_TEXT, rect < int >(10, 10, 200, 22),
true);
while (device->run ()) ;
device->drop ();
*/
printf("Hello");
return (0);
}
  • # meuh

    Posté par  (site web personnel) . Évalué à 2.

    pour lier un shared-objet tu dois utiliser "-l<nombiblio>" et pas le chemin complet, qui est réservé aux objets et aux archives d'objets (*.a).

    utilise -lGL si tu veux lier dynamiquement ton executable avec libGL.so

    utilise /usr/lib/libGL.a si tu veux lier statiquement ton executable avec libGL.a
    • [^] # Re: meuh

      Posté par  (site web personnel) . Évalué à 2.

      (tappage de crâne contre bureau et lecture complète de ton rapport)

      ok c'est libtool qui génère la ligne avec le /usr/lib/libGL.so foireuse. par contre je n'ai jamais vu un cas similaire et je ne sais pas pourquoi il peut se produire, désolé :/
      • [^] # Re: meuh

        Posté par  (site web personnel) . Évalué à 1.

        Ben oui, c'est vrai il y avait un truc pas clair dans cette ligne et je ne l'avais pas vu ...

        Mais je pense savoir pourquoi libtool ne marche plus. Comme autoconf/automake m'exaspérait horriblement, j'ai a un moment supprimé tous les (Makefile|configure).(am|pm|in|out|toto|tata|banane)

        Et mon IDE (Ajunta) m'a tout refait (pas sans de nombreuses lignes incompréhensibles). Et ca ne m'étonnerait pas que c'en soit la cause.

        Question sublidiaire: est il possible de faire travailler Anjunta avec autre chose que automake/autoconf ou alors existe il une page ou ces outils sont expliqués de manière SIMPLE et COMPRÉHENSIBLE ?

        Et merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.