전 이것에 대해 많이 조사했습니다. 그리고 많이 시도했습니다. 내가 잘못 된 곳을 모른다. 여기 우분투에서 glib를 사용할 때 정의되지 않은 참조가 발생했습니다
은 매우 간단합니다, 내 코드입니다 :#include <glib.h>
int main()
{
int *ip=g_new(int,1);
*ip=42;
return *ip;
}
우선 시도 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-설정의 출력 :
$ 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에 의해 하나를 설치하려고 나 자신. 필자는 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에서 이것을 시도합니다. 그리고 그것은 단지 괜찮습니다.
'pkg-config --cflags --libs'를 사용하지 마십시오. 컴파일러 플래그와 링커 플래그는 위치 적입니다. '--cflags'와'--libs'를 나눠서 cflags와 libs를 먼저 얻습니다. – ebassi