web-dev-qa-db-fra.com

Compilation Gcc "ne peut pas calculer le suffixe des fichiers objets: ne peut pas compiler"

Je lis actuellement le livre LFS (version 7.1) et je suis bloqué à la page 53. En essayant de compiler gcc, j'ai essayé la commande suivante:

./configure --target=$LFS_TGT --prefix=$LFS/build/gcc-build --disable-nls\
--disable-shared --disable-multilib --disable-decimal-float --disable-threads\
--disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath\
--disable-target-libiberty --disable-target-zlib\
--enable-languages=c\
--without-ppl --without-cloog\
--with-mpfr-include=$LFS/source/mpfr/src
--with-mpfr-lib=$LFS/source/mpfr/src/.libs\
--with-gmp-include=/mnt/LFS/source/gmp\
--with-gmp-lib=/mnt/LFS/source/gmp/.libs\
--with-mpc-include=/mnt/LFS/source/mpc/src\
--with-mpc-lib=/mnt/LFS/source/mpc/src/.libs

pour exécuter le script de configuration de gcc (bien sûr, j'ai déjà compilé mpfr, mpc et gmp également). Mais une fois que je lance:

make -j4

J'obtiens l'erreur suivante:

checking for suffix of object files... configure: error: in `/mnt/LFS/source/gcc-4.6.2/x86_64-lfs-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[1]: *** [configure-target-libgcc] Error 1

J'ai essayé de google pour cela et j'ai essayé les solutions que j'ai trouvées mais rien n'a fonctionné. Est-ce que quelqu'un sait pourquoi j'ai cette erreur?

25
E-Kami

Ce problème est dû au problème de chemin d'accès à la bibliothèque de liens dyanmic lorsque les programmes de test essaient de se lier à libmpc/libmpfr/libgmp.

Ajoutez la variable d'environnement ci-dessous pour autoriser le lien ld contre le bon fichier so:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/mpc/lib/

Réessayez ensuite de construire gcc.

17
Fei

"* La construction de GCC n'est pas anodine, mais n'est pas difficile si vous suivez attentivement les instructions. Beaucoup de gens se précipitent pour essayer de le construire sans lire correctement les documents d'installation et commettre une ou plusieurs de ces erreurs courantes:

1) ne lancez pas ./configure depuis le répertoire gcc src (ce n'est pas supporté) => vous devez exécuter configure depuis l'extérieur du répertoire source de gcc

2) Remarque: si GCC est lié dynamiquement aux bibliothèques prérequises (GMP/MPFR/MPC), les bibliothèques partagées doivent se trouver dans le chemin du lieur dynamique (LD_LIBRARY_PATH), à la fois lors de la création de gcc et lors de l'utilisation du compilateur installé. * "

Exemple simple (sans lien dynamique vers GMP/MPFR/MPC):

tar xzf gcc-4.8.0.tar.gz
cd gcc-4.8.0
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-4.8.0/configure --prefix=/opt/gcc-4.8.0 
make
make install

Sources: Advogato Doc - GNU Doc

12
Axel Borja

Ce message d'erreur peut provenir d'un certain nombre de raisons différentes. La meilleure façon de déterminer lequel consiste à vérifier le fichier journal '/home/manu/gcc/gcc/i686-pc-linux-gnu/libgcc/config.log' dans l'exemple ci-dessous. Ou dans le cas original des affiches '/mnt/LFS/source/gcc-4.6.2/x86_64-lfs-linux-gnu/libgcc' et recherchez la dernière ligne d'erreur.

Citant la FAQ GCC: http://gcc.gnu.org/wiki/FAQ#configure_suffix

Comme tous les projets GNU, GCC utilise les outils automatiques GNU) pour configurer couramment la compilation pour les spécificités du système de construction. Le script configure utilise ainsi de petites programmes de test - généralement appelés conftest.c - pour tester si certaines fonctions et/ou fonctionnalités sont disponibles. Si la compilation d'un tel programme de test échoue, vous verrez un message d'erreur comme:

 checking for suffix of object files... configure: error: in
 `/home/manu/gcc/gcc/i686-pc-linux-gnu/libgcc': configure: error:
 cannot compute suffix of object files: cannot compile See `config.log'
 for more details. make[2]: *** [configure-stage1-target-libgcc] Error
 1 make[2]: Leaving directory `/home/manu/gcc/gcc'

Ce message d'erreur est assez trompeur et fréquemment le problème n'a rien à voir avec le message. Vous devez vérifier le fichier 'config.log' dans le répertoire où l'erreur s'est produite. Dans l'exemple ci-dessus, vous devrez vérifier le fichier 'config.log' dans le répertoire '/ home/manu/gcc/gcc/i686-pc-linux-gnu/libgcc'. Plusieurs programmes de test peuvent avoir échoué lors de la configuration, mais certains de ces échecs ne sont pas critiques. Recherchez la dernière entrée d'erreur dans le fichier.

Les causes courantes de ce message d'erreur sont:

  • Les bibliothèques requises pour la génération GCC sont manquantes, en particulier MPFR, GMP et MPC. S'ils sont installés en tant que bibliothèques partagées, ils doivent se trouver dans le chemin de recherche de l'éditeur de liens pour pouvoir être trouvés. Veuillez suivre les instructions de la réponse à Pourquoi mon ./configure et échouer?

  • Le compilateur s'est écrasé. Par exemple, s'il existe une erreur telle que "conftest.c: erreur de compilation interne:", cela indique un bogue dans le compilateur. Si vous utilisez une version non modifiée de GCC, veuillez suivre la procédure pour signaler le bogue.

4
Stian Svedenborg