On 15 March 2012 06:32, Marc Glisse wrote: > On Wed, 14 Mar 2012, Vaugha Brewchuk wrote: > >> /bin/ld: Undefined symbols: >> access(char const*, int) >> strdup(char const*) >> strxfrm(char*, char const*, unsigned long) >> collect2: ld returned 1 exit status > > > It is suspicious that you get the types of the arguments printed here. It > means the functions were compiled as C++ functions, so probably their > declaration is missing extern "C". Indeed, check in the relevant libc headers, <unistd.h> and <string.h> to see if the headers are enclosed in: #ifdef __cplusplus extern "C" { #endif ... #ifdef __cplusplus } #endif If none of the NeXT headers have that, there's a compiler setting that forces all headers in system directories such as /usr/include to be implicitly treated as though they had that extern "C" linkage.