1

glib.h を使用してこの基本的なプログラムをコンパイルできないようです...

#include glib.h
#include stdio.h

int    main ()
{
return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));  ;
return 0;
}

glib.h は /usr/local/include/glib-2.0 にあります

だから私はでコンパイルしました

$ gcc -v -c -mcpu=v9 -I/usr/local/include/glib-2.0 testme2.c 

今、glibconfig.h がありません。しかし、それは/usr/local/lib/glib-2.0/include/glibconfig.h

不思議なことに、glibconfig.h は/usr/local/lib/glib-2.0/includeディレクトリ内の唯一のファイルであり、さらに奇妙なことに、/usr/local/include/glib-2.0ディレクトリ内にはありません。

ここにいくつかのエラーメッセージがあります...

from /usr/local/include/glib-2.0/glib.h:32,
            from testme.c:40:
:34:24: glibconfig.h: No such file or directory

これは /usr/local/include/glib-2.0/glib/gtypes.h の抜粋です

ifndef __G_TYPES_H__
define __G_TYPES_H__

include glibconfig.h
include glib/gmacros.h

G_BEGIN_DECLS

typedef char   gchar;
typedef short  gshort;

問題は、GCC が glibconfig.h を見つける方法です。

4

3 に答える 3

5

Glibは、glib-2.0.pcコンパイルとリンクに必要なすべてのオプションを記述したファイルをインストールします。

エクスポートPKG_CONFIG_PATH=/ usr / local / lib / pkgconfig
g ++ -c `pkg-config --cflags glib-2.0` testme2.c
g ++ -o testme2 testme.o `pkg-config --libs glib-2.0`

pkg-configバッククォート内の使用に注意してください。

于 2010-02-02T16:53:52.503 に答える
3

$ pkg-config --cflags --libs glib-2.0
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0

目的のライブラリの .pc ファイルが存在する場合は、手動構成の代わりに pkg-config を使用することをお勧めします。特定のニーズがある場合、または使用するライブラリの構成が存在しない場合は、手動構成にフォールバックすることをお勧めします。ご覧のとおり、pkg-config は、ルート ヘッダーがグローバル パスを検索するときに、glib-2.0 と glib-2.0/include ディレクトリの両方を検索パスに配置するようにコンパイラに指示します。

次の方法で、pkg-config の出力をコンパイル コマンドに推測できます。 gcc `pkg-config ...` ...

.pc ファイルは通常 /usr/include/pkgconfig にインストールされます

于 2010-02-02T16:55:51.700 に答える
0

glibディストリビューションには。というプログラムがあるはずglib-configです。引数を指定して実行すると、--cflags必要なすべてのgccフラグが一覧表示されます。たとえば、私のシステムでは:

$ glib-config --cflags
-I/usr/include/glib-1.2 -I/usr/lib/glib/include

ご覧のとおり、両方のディレクトリがインクルードディレクトリとして指定されています。--libsリンカに渡すことができるフラグもあるので、すべての正しいライブラリがリンクされ、リンカの検索パスが正しく指定されます。

于 2010-02-02T16:53:21.457 に答える