새로 단장한 시스템(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
와 변형 인수를 분할해야 합니다.--libs
pkg-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`