title: Undefined reference to posix_memalign using mingw32
body: <p>I'm using Debian Squeeze, cross compiling for windows targets using mingw32.</p>
  
  <p>For a Linux target, I can use posix_memalign to allocate aligned memory.</p>
  
  <p>I can't seem to find a way to get this to work for windows targets; I get errors about undefined references. I have tried several alternative functions, to no avail.</p>
  
  <p>Example Code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;malloc.h&gt;
  
  int main(void)
  {
      char *foo;
  
      /* works on linux */
      posix_memalign(&amp;foo, 1024, 1024);
  
      /* deprecated linux */
      memalign(1024, 1024);
      valloc(1024);
  
      /* should work on windows only */
      _aligned_malloc(1024, 1024);
  }
  </code></pre>
  
  <p>Example output for a Linux target (expected):</p>
  
  <pre><code>ben@debian6400:~/folder$ gcc --version
  gcc (Debian 4.4.5-8) 4.4.5
  
  ben@debian6400:~/folder$ gcc -std=c99 test.c
  test.c: In function ‘main’:
  test.c:11: warning: implicit declaration of function ‘posix_memalign’
  test.c:18: warning: implicit declaration of function ‘_aligned_malloc’
  /tmp/ccPwPLsW.o: In function `main':
  test.c:(.text+0x55): undefined reference to `_aligned_malloc'
  collect2: ld returned 1 exit status
  </code></pre>
  
  <p>Example output for a Windows target -- note that all four functions are undefined</p>
  
  <pre><code>ben@debian6400:~/folder$ i586-mingw32msvc-gcc --version
  i586-mingw32msvc-gcc (GCC) 4.4.4
  
  ben@debian6400:~/folder$ i586-mingw32msvc-gcc -std=c99 test.c
  test.c: In function ‘main’:
  test.c:14: warning: implicit declaration of function ‘posix_memalign’
  test.c:17: warning: implicit declaration of function ‘memalign’
  test.c:18: warning: implicit declaration of function ‘valloc’
  test.c:21: warning: implicit declaration of function ‘_aligned_malloc’
  /tmp/ccpH5Dsj.o:test.c:(.text+0x26): undefined reference to `_posix_memalign'
  /tmp/ccpH5Dsj.o:test.c:(.text+0x3a): undefined reference to `_memalign'
  /tmp/ccpH5Dsj.o:test.c:(.text+0x46): undefined reference to `_valloc'
  /tmp/ccpH5Dsj.o:test.c:(.text+0x5a): undefined reference to `__aligned_malloc'
  collect2: ld returned 1 exit status
  </code></pre>
  
  <p>Any ideas?</p>