This is so bizarre I think it has to be something I'm doing wrong, but here goes: Having some trouble linking something on Windows, I tried moving back to linux to see if I could get it working in distutils there first. The actual compilation was working fine on Windows (mingw32). So, back on linux: $ ./setup.py build [...usual stuff...] gcc -g -O2 -Wall -Wstrict-prototypes -fPIC -DHAVE_CONFIG_H=1 -DLOCALEDIR=\"\" -DGNULOCALEDIR=\"\" -DLOCALE_ALIAS_PATH=\"\" -Iwin -Iwin/src -Iwin/lib -Iwin/intl -I/usr/lib/glib/include -c win/src/argmatch.c -o build/temp.linux-i586-2.1/argmatch.o win/src/argmatch.c:0: unterminated string or character constant win/src/argmatch.c:0: possible real start of unterminated constant win/src/argmatch.c:0: unterminated string or character constant win/src/argmatch.c:0: possible real start of unterminated constant win/src/argmatch.c:0: unterminated string or character constant win/src/argmatch.c:0: possible real start of unterminated constant error: command 'gcc' failed with exit status 1 This file is the first one it attempted to compile. OK, I thought, clearly I've messed up the line endings or something. However, to cut the longer story short, if you cut and paste the command distutils claims to be executing (in distutils.spawn._spawn_posix, I guess) onto the command line, it works fine! Looking at argmatch.c, of course, reveals nothing amiss. Line 0 is the first line of a multi-line comment. Still, I can't really bring myself to believe that there is something wrong with _spawn_posix; at least, not enough to try to 'debug' it. Is this problem my fault, or distutils'? Just to make clear: I'm not doing any poking around in distutils' internals in my setup.py: it's just a perfectly standard set of Extension() instances, and a couple of static libs, and the only distutils function I call is setup itself. John