como corrigir o erro glib-2.35.x 'g type_init está obsoleto' ao compilar a partir do código-fonte

como corrigir o erro glib-2.35.x 'g type_init está obsoleto' ao compilar a partir do código-fonte

Olá, estou tentando compilar o gnome-packagekit a partir do código-fonte git://git.gnome.org/gnome-packagekite quando tento makerecebo o erro acima

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

Eu pesquisei isso e parece que o glib-2.35.4 desativou a g_type_initchamada. (na verdade não sei o que isso significa). Também parece estar relacionado a wperrorverificações, segundo alguns comentaristas. A saída de autogen.shé

            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

O que sugere que isso pode ter algo a ver com isso.

Gostaria de saber se existe uma maneira fácil de dizer ao compilador para usar a versão antiga glibou ignorar werroras verificações.

Responder1

(na verdade não sei o que isso significa)

O que isso significa é que a partir da versão 2.35.0, a função g_type_init não deve mais ser usada porque a intenção é removê-la da biblioteca em algum momento no futuro.

Portanto, ao compilar programas simplificados mais antigos com a versão 2.35.0 ou superior, você deve editar o código para testar g_type_init

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

A princípio, parece que g_type_init será excluído apenas para o glib 2.35.0, mas a macro LIB_CHECK_VERSION está de fato definida para retornar true para a versão igual ou superior/mais recente que a especificada.

Gostaria de saber se existe uma maneira fácil de dizer ao compilador para usar a versão antiga do glib

Você pode instruir o compilador e o vinculador a usar uma versão mais antiga ou mais recente que a padrão, mas obviamente você precisa ter essa versão instalada, o que pode muito bem levar a problemas com outros programas que tentam usar a versão errada da biblioteca superficial.

Portanto, como regra geral, instale apenas várias versões da biblioteca como último recurso, especialmente para bibliotecas de uso geral, como glib, que é usada por tantos programas.

para ignorar verificações de erros.

O sinalizador -Wall no comando gcc diz ao gcc para sinalizar todos os avisos e, há alguns anos, o estado padrão do gcc é tratar todos os avisos como erros. Se você fizer essa pergunta em muitos sites, os respondentes simplesmente lhe dirão para fazer uma pesquisa na web.

Se você verificasse a página de manual do gcc, descobriria que a melhor maneira de lidar com o problema específico de uma função obsoleta é adicionar

-Wno-declarações obsoletas

ao comando gcc para simplesmente ignorar isso e ainda manter a segurança de verificar todos os outros avisos com -Wall

Responder2

Comente a linha que contém g_type_init. Isso deve resolver o problema.

informação relacionada