comment corriger glib-2.35.x 'g type_init est obsolète' erreur lors de la compilation à partir de la source

3

Salut, j'essaie de compiler gnome-packagekit depuis la source git://git.gnome.org/gnome-packagekit et quand j'essaie et make j'obtiens l'erreur ci-dessus

error: ‘g_type_init’ is deprecated (declared at /usr/local/include/glib-2.0/gobject/gtype.h:669) [-Werror=deprecated-declarations]
cc1: all warnings being treated as errors

J'ai regardé cela et cela semble être parce que glib-2.35.4 a déconseillé l'appel g_type_init . (Je ne sais pas vraiment ce que cela signifie). Il semble également être lié aux contrôles wperror selon certains commentateurs. La sortie de autogen.sh est

            gnome-packagekit 3.7.6
          =============================

prefix:                    /usr/local
compiler:                  gcc
cflags:                    -g -O2
cppflags:                   -Werror -Wall -Wreturn-type -Wdeclaration-after-statement -Wno-uninitialized -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Winline -Wformat-nonliteral -Wformat-security -Wswitch-default -Winit-self -Wmissing-include-dirs -Wno-strict-aliasing -Wundef -Waggregate-return -Wmissing-format-attribute -g -fexceptions                    gnome-packagekit 3.7.6
              =============================

    prefix:                    /usr/local
    compiler:                  gcc
    cflags:                    -g -O2
    cppflags:                   -Werror -Wall -Wreturn-type -Wdeclaration-after-statement -Wno-uninitialized -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Winline -Wformat-nonliteral -Wformat-security -Wswitch-default -Winit-self -Wmissing-include-dirs -Wno-strict-aliasing -Wundef -Waggregate-return -Wmissing-format-attribute -g -fexceptions

Ce qui suggère que cela pourrait avoir quelque chose à voir avec cela.

Je me demande s'il est facile de demander au compilateur d'utiliser l'ancienne version de glib ou d'ignorer les vérifications de werror .

    
posée Tahnoon Pasha 01.03.2013 - 07:14
la source

2 réponses

3
  

(Je ne sais pas vraiment ce que cela signifie)

Ce qui veut dire que depuis la version 2.35.0 de la glib, la fonction g_type_init ne doit plus être utilisée car l’intention est de la supprimer de la bibliothèque à un moment donné.

Donc, lorsque vous compilez d'anciens programmes glib avec la version glib 2.35.0 ou supérieure, vous devez éditer le code pour tester g_type_init

#if !GLIB_CHECK_VERSION(2,35,0)
g_type_init ();
#endif

Au premier abord, il semble que g_type_init ne sera exclu que pour la glib 2.35.0 mais la macro LIB_CHECK_VERSION est en fait définie pour renvoyer true pour la même version ou une version plus récente / nouvelle que celle spécifiée.

  

Je me demande s’il existe un moyen simple de demander au compilateur d’utiliser l’ancienne version de glib

Vous pouvez demander au compilateur et à l'éditeur de liens d'utiliser une version plus ancienne ou plus récente que la version par défaut, mais vous devez évidemment avoir cette version installée qui peut très bien entraîner des problèmes avec d'autres programmes essayant d'utiliser la mauvaise version de la bibliothèque glib .

Donc, en règle générale, n’installez que plusieurs versions de la bibliothèque en dernier recours, surtout pour les bibliothèques à usage général telles que glib, utilisées par tant de programmes.

  

ignorer les vérifications d’erreurs.

L'indicateur -Wall de la commande gcc indique à gcc de signaler tous les avertissements, et depuis quelques années, l'état par défaut de gcc consiste à traiter tous les avertissements comme des erreurs. Si vous posez cette question sur de nombreux sites, les intervenants vous diront simplement de faire une recherche sur le Web.

Si vous deviez consulter la page de manuel de gcc, vous constateriez que le meilleur moyen de résoudre le problème spécifique d’une fonction obsolète est d’ajouter

-Wno-deprecated-declarations

à la commande gcc pour simplement ignorer cela et conserver la sécurité de la vérification de tous les autres avertissements avec -Wall

    
réponse donnée J G Miller 23.06.2014 - 21:53
la source
0

Commentez la ligne contenant g_type_init . Cela devrait résoudre le problème.

    
réponse donnée user202243 13.10.2013 - 08:57
la source

Lire d'autres questions sur les étiquettes