glib가 포함된 경우에도 glib 구성 요소 오류에 대한 정의되지 않은 참조가 발생합니다.

glib가 포함된 경우에도 glib 구성 요소 오류에 대한 정의되지 않은 참조가 발생합니다.

새로 단장한 시스템(2GB RAM, 2GHz 듀얼 코어)에서 Xubuntu 14.04를 사용하기 시작했고 c에 대한 대략적/읽기 지식이 있지만 저는 c 프로그래머가 아닙니다.

내가 찾은 코드를 컴파일하려고 합니다.여기작업 공간 간에 이동하는 작업에 대한 시각적 알림을 만듭니다. 암호:

// wschanged.c
#include <libwnck/libwnck.h>
#include <stdlib.h>


static void
on_active_workspace_changed (WnckScreen    *screen,
                             WnckWorkspace *space,
                             gpointer      data)
{
    // Executes a script on workspace change
    system ("~/.workspace-changed");
}

int main(int argc, char ** argv)
{

   GMainLoop *loop;   
   WnckScreen *screen;

   glib:gdk_init (&argc, &argv);

   loop = g_main_loop_new (NULL, FALSE);
   screen = wnck_screen_get_default();

   g_signal_connect (screen, "active-workspace-changed",
                    G_CALLBACK (on_active_workspace_changed), NULL);

   g_main_loop_run (loop);
   g_main_loop_unref (loop);    

   return 0;
}

컴파일 명령:

gcc -O2 -DWNCK_I_KNOW_THIS_IS_UNSTABLE -o wschanged `pkg-config  --cflags --libs libwnck-3.0` wschanged.c

내가 받은 오류:

wschanged.c: In function ‘on_active_workspace_changed’:
wschanged.c:12:12: warning: ignoring return value of ‘system’, declared with attribute warn_unused_result [-Wunused-result]
     system ("~/.workspace-changed");
            ^
/tmp/ccR60OkB.o: In function `main':
wschanged.c:(.text.startup+0x16): undefined reference to `gdk_init'
wschanged.c:(.text.startup+0x1f): undefined reference to `g_main_loop_new'
wschanged.c:(.text.startup+0x27): undefined reference to `wnck_screen_get_default'
wschanged.c:(.text.startup+0x41): undefined reference to `g_signal_connect_data'
wschanged.c:(.text.startup+0x49): undefined reference to `g_main_loop_run'
wschanged.c:(.text.startup+0x51): undefined reference to `g_main_loop_unref'
collect2: error: ld returned 1 exit status

최신 버전의 libwnck가 있고 다음도 추가했습니다.

#include <glib.h>

이것이 glib 패키지의 객체에 대한 정의되지 않은 참조에서 비롯된 것으로 보이는 오류를 수정하는지 확인하세요. 그러나 오류 출력은 변경되지 않습니다.

어떤 조언이라도 대단히 감사하겠습니다!

답변1

인수의 순서가 gcc중요하므로 호출된 인수 --cflags와 변형 인수를 분할해야 합니다.--libspkg-config

gcc -O2 -DWNCK_I_KNOW_THIS_IS_UNSTABLE -o wschanged `pkg-config --cflags libwnck-3.0` wschanged.c `pkg-config --libs libwnck-3.0`

관련 정보