title: Linker errors when compiling against glib...?
body: <p>I'm having trouble compiling a simple, sample program against glib on Ubuntu. I get the following errors. I can get it to compile but not link with the <code>-c</code> flag, which I believe means I have the glib headers installed, but it's not finding the shared object code. See also the <a href="http://en.wikipedia.org/wiki/Make_%28software%29" rel="noreferrer">Make</a> file below.</p>
  
  <pre><code>$&gt; make re
  gcc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include  -lglib-2.0       re.c   -o re
  /tmp/ccxas1nI.o: In function `print_uppercase_words':
  re.c:(.text+0x21): undefined reference to `g_regex_new'
  re.c:(.text+0x41): undefined reference to `g_regex_match'
  re.c:(.text+0x54): undefined reference to `g_match_info_fetch'
  re.c:(.text+0x6e): undefined reference to `g_print'
  re.c:(.text+0x7a): undefined reference to `g_free'
  re.c:(.text+0x8b): undefined reference to `g_match_info_next'
  re.c:(.text+0x97): undefined reference to `g_match_info_matches'
  re.c:(.text+0xa7): undefined reference to `g_match_info_free'
  re.c:(.text+0xb3): undefined reference to `g_regex_unref'
  collect2: ld returned 1 exit status
  make: *** [re] Error 1
  </code></pre>
  
  <p><code>Makefile</code> used:</p>
  
  <pre><code># Need to installed libglib2.0-dev some system specific install that will
  # provide a value for pkg-config
  INCLUDES=$(shell pkg-config --libs --cflags glib-2.0)
  CC=gcc $(INCLUDES)
  PROJECT=re
  
  # Targets
  full: clean compile
  
  clean:
      rm $(PROJECT)
  
  compile:
      $(CC) $(PROJECT).c -o $(PROJECT)
  </code></pre>
  
  <p><code>.c</code> code being compiled:</p>
  
  <pre><code>#include &lt;glib.h&gt;
  
  void print_upppercase_words(const gchar *string)
  {
    /* Print all uppercase-only words. */
  
    GRegex *regex;
    GMatchInfo *match_info;
  
    regex = g_regex_new("[A-Z]+", 0, 0, NULL);
    g_regex_match(regex, string, 0, &amp;match_info);
  
    while (g_match_info_matches(match_info))
      {
        gchar *word = g_match_info_fetch(match_info, 0);
        g_print("Found %s\n", word);
        g_free(word);
        g_match_info_next(match_info, NULL);
      }
  
    g_match_info_free(match_info);
    g_regex_unref(regex);
  }
  
  int main()
  {
    gchar *string = "My body is a cage.  My mind is THE key.";
  
    print_uppercase_words(string);
  }
  </code></pre>
  
  <p>Strangely, when I run <code>glib-config</code>, it doesn't like that command, though I don't know how to tell Bash or Make how to just use one over the other when it complains that <code>gdlib-config</code> is in these two packages.</p>
  
  <pre><code>$&gt; glib-config
  No command 'glib-config' found, did you mean:
   Command 'gdlib-config' from package 'libgd2-xpm-dev' (main)
   Command 'gdlib-config' from package 'libgd2-noxpm-dev' (main)
  glib-config: command not found
  </code></pre>