Hola, estoy intentando compilar gnome-packagekit desde el código fuente git://git.gnome.org/gnome-packagekit
y cuando lo intento make
aparece 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_init
llamada. (En realidad no sé qué significa eso). wperror
Según algunos comentaristas, también parece estar relacionado con los controles. La salida de autogen.sh
es
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 glib
o que ignore werror
las 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.