como corrigir o erro glib-2.35.x 'g type_init é descontinuado' ao compilar a partir da origem

3

Oi eu estou tentando compilar o gnome-packagekit da fonte git://git.gnome.org/gnome-packagekit e quando eu tento e make eu recebo 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 procurei isso e parece que o glib-2.35.4 substituiu a chamada g_type_init . (Eu realmente não sei o que isso significa). Também parece estar relacionado com wperror cheques de acordo com alguns comentadores. 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 de glib ou ignorar werror checks.

    
por Tahnoon Pasha 01.03.2013 / 07:14

2 respostas

3
  

(Eu não sei o que isso significa)

O que significa é que, começando com a versão simplificada 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.

Então, ao compilar programas glib mais antigos contra a versão simplificada 2.35.0 ou superior, você deve editar o código para colocar um teste em torno de g_type_init

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

A princípio, parece que o 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 mesma versão, ou maior, ou mais nova que a especificada.

  

Pergunto 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 nova que o padrão, mas obviamente você precisa ter essa versão instalada, o que pode levar a problemas com outros programas que tentam usar a versão incorreta da biblioteca simplificada. .

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

  

para ignorar verificações de erros.

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

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

-Declarações declaradas

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

    
por J G Miller 23.06.2014 / 21:53
0

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

    
por user202243 13.10.2013 / 08:57