probleme include avec g++ 2.95 et pas avec g++ 4.3.3
probleme include avec g++ 2.95 et pas avec g++ 4.3.3 - C++ - Programmation
MarshPosté le 03-08-2009 à 11:27:05
Bonjour à tous,
Je travaille sur une librairie en c++ multi environnements (windows, macos, linux).
pour ce qui est de linux, elle doit fonctionner sous: - Linux 2.6.x / g++ 4.3.2 / libc 2.8.9 - Linux 2.4.x / g++ 3.2.3 / libc 2.3.2 - Linux Debian Woody / g++ 2.95 / libc 2.2
La libairie compile et fonctionne parfaitement sur les 2 premiers linux (et également windows et mac).
Sur le troisième linux -le plus ancien-, j'ai l'erreur :
In file included from /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_alloc.h:42, from /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/alloc.h:21, from /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/std/bastring.h:39, from /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/string:6, from ../../../api/LineNumberReader.h:24, from ../../common/client/AppClient.cpp:38: /usr/lib/gcc-lib/i386-linux/2.95.4/include/new:9: directory `../../common/exception' specified in #include
Ce qui semble poser problème, c'est la définition dans le makefile d'un répertoire d'include du projet s'appelant "exception" (-I) Dans la STL, l'interface new fait un #include <exception> que le compilateur cherche d'abord dans le répertoire du projet.
La solution de renommer le répertoire 'exception' du projet en 'exceptions' corrige le problème. Mais ca m'ennuie de faire cette modification Pour confirmer le problème, dans le source new de la stl, j'ai modifié 'include <exception>' par 'include "exception"'. et ca permet de compiler. puisqu'il va d'abord chercher 'exception' dans le répertoire courant.
Les questions: -Existe-t-il une spécificité de g++ 2.95 par rapport aux versions plus récentes expliquant ce résultat? -Et surtout, existe il une astuce (option de compil ou autre)?
Marsh Posté le 03-08-2009 à 11:27:05
Bonjour à tous,
Je travaille sur une librairie en c++ multi environnements (windows, macos, linux).
pour ce qui est de linux, elle doit fonctionner sous:
- Linux 2.6.x / g++ 4.3.2 / libc 2.8.9
- Linux 2.4.x / g++ 3.2.3 / libc 2.3.2
- Linux Debian Woody / g++ 2.95 / libc 2.2
La libairie compile et fonctionne parfaitement sur les 2 premiers linux (et également windows et mac).
Sur le troisième linux -le plus ancien-, j'ai l'erreur :
In file included from /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_alloc.h:42,
from /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/alloc.h:21,
from /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/std/bastring.h:39,
from /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/string:6,
from ../../../api/LineNumberReader.h:24,
from ../../common/client/AppClient.cpp:38:
/usr/lib/gcc-lib/i386-linux/2.95.4/include/new:9: directory `../../common/exception' specified in #include
Ce qui semble poser problème, c'est la définition dans le makefile d'un répertoire d'include du projet s'appelant "exception" (-I)
Dans la STL, l'interface new fait un #include <exception> que le compilateur cherche d'abord dans le répertoire du projet.
La solution de renommer le répertoire 'exception' du projet en 'exceptions' corrige le problème. Mais ca m'ennuie de faire cette modification
Pour confirmer le problème, dans le source new de la stl, j'ai modifié 'include <exception>' par 'include "exception"'. et ca permet de compiler. puisqu'il va d'abord chercher 'exception' dans le répertoire courant.
Les questions:
-Existe-t-il une spécificité de g++ 2.95 par rapport aux versions plus récentes expliquant ce résultat?
-Et surtout, existe il une astuce (option de compil ou autre)?
En vous remerciant. A bientot.