私はこれについてたくさん検索しました。そして、たくさん試しました。ちょうど私が間違っているか分からない。ここでubuntuでglibを使用すると未定義の参照になりました
が私のコードで、それは非常に簡単です:
#include <glib.h>
int main()
{
int *ip=g_new(int,1);
*ip=42;
return *ip;
}
まず私がコンパイルし、それが終了したとき、私のUbuntuとミントでapt-getのます:libglib2.0-devのを試してみてください。
gcc `pkg-config --cflags --libs glib-2.0` -o main main.c
/tmp/ccYFljQD.o: In function `main':
main.c:(.text+0x13): undefined reference to `g_malloc_n'
collect2: error: ld returned 1 exit status
Makefile:3: recipe for target 'all' failed
make: *** [all] Error 1
そしてPKG-config設定の出力:
$ pkg-config --cflags --libs glib-2.0
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lglib-2.0
だから、私はソースからコンパイルして、mで1をインストールしようとし、その後、働いていませんあなた自身。 私はapt-get libffi-dev、autogenとconfigure、make、make installを実行しました。これは大丈夫です。
$ pkg-config --cflags --libs glib-2.0
-I/home/donpope/software/include/glib-2.0 -I/home/donpope/software/lib/glib-2.0/include -L/home/donpope/software/lib -lglib-2.0
はまだ同じエラーでコンパイルします。
gcc `pkg-config --cflags --libs glib-2.0` -o main main.c
/tmp/cctR3iEq.o: In function `main':
main.c:(.text+0x13): undefined reference to `g_malloc_n'
collect2: error: ld returned 1 exit status
Makefile:3: recipe for target 'all' failed
make: *** [all] Error 1
だから私はここにいくつかの助けを必要としています。ありがとうございました!
更新: これ以降、gccが古いRedHatで試してみます。それは大丈夫です。私はglibのサンドボックスでこのMakefileを持って
'pkg-config --cflags --libs'を使わないでください:コンパイラフラグとリンカフラグは定位置です。 '--cflags'と' --libs'を分割し、最初にcflagsを、その後にlibsを取得します。 – ebassi