title: Undefined symbol
body: <p>I'm getting an <code>undefined symbol</code> error even though I think I've defined it okay.  From reading other posts and Googling, it seems that the linker is failing to find the appropriate symbol.  I'm new to C so I'm sure I'm just missing something stupid.</p>
  
  <pre><code>glen-urbans-macbook-pro:everybit glurban$ make
  gcc -O3 -DNDEBUG -std=c99 -Wall -Wstrict-prototypes -I. -m64 -DBUILD_64 -c bitarray.c -o bitarray.o
  gcc -o everybit main.o ktiming.o bitarray.o tests.o -arch x86_64 -framework CoreServices
  gcc -o everybit_harvey main.o ktiming.o bitarray_harvey.o tests.o -arch x86_64 -framework CoreServices
  Undefined symbols:
    "_bitarray_reverse", referenced from:
        _test_reverse in tests.o
  ld: symbol(s) not found
  collect2: ld returned 1 exit status
  make: *** [everybit_harvey] Error 1
  </code></pre>
  
  <p>In tests.c:</p>
  
  <pre><code>#include "bitarray.h"
  ...
  
  /* Peform a reversal operation on test_ba. */
  static void testutil_reverse(size_t bit_off, size_t bit_len) {
    assert(test_ba != NULL);
    bitarray_reverse(test_ba, bit_off, bit_len);
    if (test_verbose) {
      bitarray_fprint(stdout, test_ba);
      fprintf(stdout, " rotate off=%llu, len=%llu\n",
          (unsigned long long) bit_off, (unsigned long long) bit_len);
    }
  }
  
  static void test_reverse(void) {
    testutil_frmstr("10000101");
    testutil_reverse(0, 8);
    testutil_expect("10100001", 4);
  }
  
  test_case_t test_cases[] = {
    test_headerexamples,
    test_8bit,
    test_moreflips,
    // ADD YOUR TEST CASES HERE
      test_reverse,
    NULL // This marks the end of all test cases. Don't change this!
  };
  </code></pre>
  
  <p>In bitarray.c,</p>
  
  <pre><code>/* Reverse a bit array */
  void bitarray_reverse(bitarray_t *ba, size_t bit_off, size_t bit_len){
      size_t tmp;
      int i;
      for(i = 0; i &lt; bit_len/2; i++){
          tmp = bitarray_get(ba, bit_off + i);
          bitarray_set(ba, bit_off + i, bitarray_get(ba,bit_off + bit_len - 1 - i));
          bitarray_set(ba, bit_off + bit_len - 1 - i, tmp);
      }
  }
  </code></pre>
  
  <p>In bitarray.h:</p>
  
  <pre><code>void bitarray_reverse(bitarray_t *ba, size_t bit_off, size_t bit_len);
  </code></pre>
  
  <p>TIA</p>