5

I'm really a Python developer exclusively, but I'm making my first foray into C programming now, and I'm having a lot of trouble getting started. I can't seem to get the hang of compilation and including libraries. At this point, I'm just identifying the libraries that I need and trying to compile them with a basic "hello, world" app just to make sure that I have my environment setup to do the actual programming.

This is a DBus backend application that will use GIO to connect to DBus.

#include <stdlib.h>
#include <gio/gio.h>

int 
main (int argc, char *argv[])
{
    printf("hello, world");
    return 0;
}

Then, I try to compile:

~$ gcc main.c
main.c:2:21: fatal error: gio/gio.h: No such file or directory
 #include <gio/gio.h>

I believe that I've installed the correct packages as indicated here, and gio.h exists at /usr/include/glib-2.0/gio/gio.h.

I found a command online to add a search directory to gcc, but that resulted in other errors:

~$ gcc -I /usr/include/glib-2.0/ main.c 
In file included from /usr/include/glib-2.0/glib/galloca.h:34:0,
                 from /usr/include/glib-2.0/glib.h:32,
                 from /usr/include/glib-2.0/gobject/gbinding.h:30,
                 from /usr/include/glib-2.0/glib-object.h:25,
                 from /usr/include/glib-2.0/gio/gioenums.h:30,
                 from /usr/include/glib-2.0/gio/giotypes.h:30,
                 from /usr/include/glib-2.0/gio/gio.h:28,
                 from main.c:2:
/usr/include/glib-2.0/glib/gtypes.h:34:24: fatal error: glibconfig.h: No such file or directory
 #include <glibconfig.h>
                        ^
compilation terminated.

There has to be some relatively simple method for being able to set some options/variables (makefile?) to automatically include the necessary headers. I'm also going to use Eclipse-CDT or Anjuta as an IDE and would appreciate help to fix the import path (or whatever it's called in C).

Any help is greatly appreciated.

fandingo
  • 1,330
  • 5
  • 21
  • 31
  • Possible duplicate of [Compile a simple program on ubuntu arm](http://stackoverflow.com/questions/18877528/compile-a-simple-program-on-ubuntu-arm) which first answer fits this question. – Déjà vu Feb 20 '17 at 01:34

1 Answers1

4

Use pkg-config (and make). See exactly this answer to a very similar question. See also this and that answers. Don't forget -Wall -g flags to gcc ..

You don't need an IDE to compile your code (the IDE will just run some gcc commands, so better know how to use them yourself).

Community
  • 1
  • 1
Basile Starynkevitch
  • 223,805
  • 18
  • 296
  • 547
  • 3
    Thanks for the tip. This works `gcc -Wall -g main.c $(pkg-config --libs --cflags glib-2.0) -o main`. I'll have to learn make, but this will at least get me started. – fandingo Feb 03 '14 at 20:15