cómo corregir el error glib-2.35.x 'g type_init está en desuso' al compilar desde la fuente

cómo corregir el error glib-2.35.x 'g type_init está en desuso' al compilar desde la fuente

Hola, estoy intentando compilar gnome-packagekit desde el código fuente git://git.gnome.org/gnome-packagekity cuando lo intento makeaparece el error anterior.

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

He buscado esto y parece deberse a que glib-2.35.4 ha desaprobado la g_type_initllamada. (En realidad no sé qué significa eso). wperrorSegún algunos comentaristas, también parece estar relacionado con los controles. La salida de autogen.shes

            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

Lo que sugiere que esto podría tener algo que ver con eso.

Me pregunto si hay una manera fácil de decirle al compilador que use la versión anterior glibo que ignore werrorlas comprobaciones.

Respuesta1

(En realidad no sé lo que eso significa)

Lo que esto significa es que a partir de la versión simplista 2.35.0, la función g_type_init ya no debería usarse porque la intención es eliminarla de la biblioteca en algún momento en el futuro.

Entonces, al compilar programas simplistas antiguos con la versión simplista 2.35.0 o superior, debes editar el código para probar g_type_init.

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

Al principio, parece que g_type_init solo se excluirá para glib 2.35.0, pero la macro LIB_CHECK_VERSION de hecho está definida para devolver verdadero para la misma o mayor/más nueva versión que la especificada.

Me pregunto si hay una manera fácil de decirle al compilador que use la versión anterior de glib.

Puede indicarle al compilador y al vinculador que usen una versión más antigua o más nueva que la predeterminada, pero obviamente necesita tener esa versión instalada, lo que puede causar problemas con otros programas que intentan usar la versión incorrecta de la biblioteca simplista.

Por lo tanto, como regla general, instale solo varias versiones de la biblioteca como último recurso, especialmente para bibliotecas de propósito general como glib, que utilizan tantos programas.

para ignorar las comprobaciones de errores.

El indicador -Wall en el comando gcc le dice a gcc que marque todas las advertencias y, desde hace algunos años, el estado predeterminado de gcc es tratar todas las advertencias como errores. Si hace esta pregunta en muchos sitios, los respondedores simplemente le dirán que haga una búsqueda en la web.

Si consultara la página del manual de gcc, descubriría que la mejor manera de abordar el problema específico de una función obsoleta es agregar

-Wno-declaraciones-obsoletas

al comando gcc para simplemente ignorarlo y aún mantener la seguridad de verificar todas las demás advertencias con -Wall

Respuesta2

Comente la línea que contiene g_type_init. Eso debería resolver el problema.

información relacionada