views:

87

answers:

1
#include <libnotify/notify.h>
#include <glib.h>
#include <unistd.h>
int main(int argc, char** argv)
{
    if(argc == 3)
    {
        NotifyNotification *n;
        notify_init("Test");
        n = notify_notification_new (argv[1],argv[2], NULL, NULL);
        notify_notification_set_timeout (n, 3000); //3 seconds
        if (!notify_notification_show (n, NULL)) {
            g_error("Failed to send notification.\n");
            return 1;
        }
        g_object_unref(G_OBJECT(n));
    }else{
        g_print("Too few arguments (%d), 2 needed.\n", argc-1);
    }
    return 0;
}

Compiling the code gives me "undefined reference to" error:

shadyabhi@shadyabhi-desktop:~/c$ gcc -Wall -o test libnotify.c `pkg-config --libs --cflags glib-2.0 gtk+-2.0`
/tmp/ccA2Q6xX.o: In function `main':
libnotify.c:(.text+0x20): undefined reference to `notify_init'
libnotify.c:(.text+0x4b): undefined reference to `notify_notification_new'
libnotify.c:(.text+0x60): undefined reference to `notify_notification_set_timeout'
libnotify.c:(.text+0x71): undefined reference to `notify_notification_show'
collect2: ld returned 1 exit status
shadyabhi@shadyabhi-desktop:~/c$

I took the code from this blog.

+3  A: 

Sounds like you forgot to pass -lnotify to actually link against libnotify.

Ignacio Vazquez-Abrams
ok. thanx..Perfect. But how will i know that I have to pass "-lnotify" as the argument to gcc? I mean the exact name..
shadyabhi
If a library comes with a `.pc` file you can query `pkg-config` to find out what arguments you need to pass.
Ignacio Vazquez-Abrams