これが世界で最も単純なglibプログラムです。
#include <glib.h>
gcc test.c
でコンパイルしようとすると、次のようになります:
test.c:1:18: error: glib.h: No such file or directory
そのため、適切なパッケージがあることを確認します。
# dpkg -l | grep libglib
ii libglib-Perl 1:1.183-1 Perl interface to the GLib and GObject libra
ii libglib1.2-dev 1.2.10-19build1 The GLib library of C routines (development)
ii libglib1.2ldbl 1.2.10-19build1 The GLib library of C routines
ii libglib2.0-0 2.20.1-0ubuntu2 The GLib library of C routines
ii libglib2.0-cil 2.12.1-1ubuntu2 CLI binding for the GLib utility library 2.1
ii libglib2.0-data 2.18.2-0ubuntu2 Common files for GLib library
ii libglib2.0-dev 2.20.1-0ubuntu2 Development files for the GLib library
ii libglibmm-2.4-1c2a 2.18.1-1 C++ wrapper for the GLib toolkit (shared lib
次に、/ usr/includeの下にある「glib.h」を検索します。 /usr/include/glib-1.2/glib.hと/usr/include/glib-2.0/glib.hの2つを取得します。だから私は試します:
$ gcc -I/usr/include/glib-2.0 -Wall test.c
In file included from /usr/include/glib-2.0/glib/galloca.h:34,
from /usr/include/glib-2.0/glib.h:32,
from test.c:2:
/usr/include/glib-2.0/glib/gtypes.h:34:24: error: glibconfig.h: No such file or directory
(約10,000個のエラーが追加されました)
コンピューターのどこにもglibconfig.h
がないようです。
私は今何をしますか?
glibは自分自身を隠す傾向があります... GCCはサブディレクトリを自動的に検索しないため、includeステートメントは機能せず、glib-1.2またはglib-2.0のglib.hを見ることができません。
GLIBマニュアルの GLibアプリケーションのコンパイル ページを読んでください... pkg-config --cflags glib-2.0
GCCの正しいフラグを取得します。
あなたがしようとしていることを行う標準的な方法は
% gcc test.c -Wall -o test `pkg-config --cflags --libs glib-2.0`
バックティックに注意してください。これは、シェルにpkg-configコマンドを「インプレース」で実行するように指示します。
> > The canonical way to do what you are trying is
> % gcc test.c -Wall -o test `pkg-config --cflags --libs glib-2.0`
申し訳ありませんが、ありません。これはよくある誤解であり、ほとんどの場合、ELFベースのシステム、特にLinuxで動作します。正規の方法は、次のように、コマンドラインの正しい従来の場所にcflagsとライブラリを別々に渡すことです。
gcc -Wall -o test `pkg-config --cflags glib-2.0` test.c `pkg-config --libs glib-2.0`
Pkg-configが--cflagsと--libsの両方のオプションを同時に受け入れるのは残念です。これは、この誤ったミームが決して死ぬことはなく、Linuxでそれを使用した人々が引き続き試してみると困惑することを意味するためです。他のプラットフォームでも同じです。
なので @chris
使用を言ったpkg-config
。
glibconfig.h is missing
これは、このファイルが/usr/include/glib-2.0
、ただし/usr/lib/glib-2.0.
したがって、これも含める必要があります/usr/lib
パスまたはファイルを/include/glib-2.0
私もglib.hを使用しています-これを実行して、すべてのglib.hプログラムをコンパイルします:)
gcc `pkg-config --cflags --libs glib-2.0` filename.c
pkg-config --cflags --libs glib-2.0
チルダの下にあるバッククォート付き(クォーティーなキーボードの左端のキー)。
後でありがとう..:P