
こんにちは。ソースからgnome-packagekitをコンパイルしようとしていますgit://git.gnome.org/gnome-packagekit
が、試してみるとmake
上記のエラーが発生します。
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
調べてみたところ、どうやら glib-2.35.4 でこの呼び出しが廃止されたためらしいg_type_init
。(実際、それが何を意味するのかは分かりません)。また、一部の解説者によると、チェックに関連しているようですwperror
。出力は次のようになり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
これは、これと何らかの関係があるかもしれないことを示唆しています。
コンパイラに古いバージョンを使用するか、チェックglib
を無視するように指示する簡単な方法があるかどうか疑問に思います。werror
答え1
(実際それが何を意味するのかは分かりません)
つまり、glib バージョン 2.35.0 以降では、将来のある時点でライブラリから削除する予定であるため、関数 g_type_init は使用しなくなります。
したがって、古いglibプログラムをglibバージョン2.35.0以降に対してコンパイルする場合は、コードを編集してg_type_initの周囲にテストを追加する必要があります。
#if !GLIB_CHECK_VERSION(2,35,0)
g_type_init ();
#endif
最初は、g_type_init は glib 2.35.0 に対してのみ除外されるように見えますが、マクロ LIB_CHECK_VERSION は、実際には指定されたバージョンと同じかそれより大きい/新しいバージョンに対して true を返すように定義されています。
コンパイラに古いバージョンのglibを使用するように指示する簡単な方法があるかどうか疑問に思う
コンパイラとリンカーに、デフォルトよりも古いバージョンまたは新しいバージョンを使用するように指示できますが、当然そのバージョンがインストールされている必要があり、他のプログラムが glib ライブラリの間違ったバージョンを使用しようとすると問題が発生する可能性があります。
したがって、原則として、複数のバージョンのライブラリをインストールするのは最後の手段としてのみにしてください。特に、多くのプログラムで使用される glib などの汎用ライブラリの場合は、複数のバージョンをインストールしてください。
エラーチェックを無視します。
gcc コマンドの -Wall フラグは、すべての警告にフラグを立てるように gcc に指示します。ここ数年、gcc のデフォルト状態はすべての警告をエラーとして扱うようになっています。多くのサイトでこの質問をすると、回答者は単に Web 検索をするように言うでしょう。
gccのマニュアルページを確認すると、非推奨関数の特定の問題に対処する最善の方法は、以下を追加することであることがわかります。
-Wno非推奨宣言
gccコマンドに-Wallオプションを追加して、それを無視し、他のすべての警告をチェックする安全性を維持する。
答え2
を含む行をコメントアウトしますg_type_init
。これで問題は解決するはずです。