On 13 March 2012 00:14, Vaugha Brewchuk wrote: > I have done a bit more experimenting and have made small progress. I tried linking abi_check manually while adding an object including strdup(). As a result, my original error message changed from: > > /bin/ld: Undefined symbols: > access(char const*, int) > ___gxx_personality_sj0 > ___cxa_call_unexpected > strxfrm(char*, char const*, unsigned long) > strdup(char*) > write(int, void const*, unsigned long) > _strdup > > to: > > /bin/ld: Undefined symbols: > access(char const*, int) > ___gxx_personality_sj0 > ___cxa_call_unexpected > strxfrm(char*, char const*, unsigned long) > strdup(char*) > write(int, void const*, unsigned long) > > So the actual linker error relating to missing "_strdup" disappeared, but the error with "strdup(char*)" remained. I then edited my system headers to add the missing definitions for access(), strxfrm(), strdup() and write() and rebuilt gcc-3.2.3 from scratch (it takes around 20 hours on a 68040!). Subsequent manual linking of abi_check only complained about two missing symbols: > > /bin/ld: Undefined symbols: > ___gxx_personality_sj0 > ___cxa_call_unexpected > > Could someone please indicate to me at what point in gcc configuration (or build) the system headers are scanned for presence or absence of functions? Where do I tweak the gcc source to be able to define these missing functions without the need for editing my system headers? I tried to search the sources and the build directories, but was not successful in finding anything obviously related. > > Finally, how and where are the missing two symbols "___gxx_personality_sj0" and "___cxa_call_unexpected" normally generated? And again, where in the code do I need to start looking to define a workaround? They should be defined by gcc itself, in libsupc++.so, you shouldn't have to do anything. How are you linking abi_check? What exact command? I think the problem is how you're linking, not missing features of the OS.