
I suspect this may be because gcc has managed to pick up the Cygwin ld instead of the mingw one. Monique - what exactly is your PATH? What happens when you say 'ld --version'?
'ld --version' doesn't show differences between mingw/cygwin, does it? and even the mingw ld apparently sets its search_dirs without drive letters: $ type -ap ld /cygdrive/c/MinGW/bin/ld $ ld --verbose | head GNU ld version 2.16.91 20050827 Supported emulations: i386pe using internal linker script: ================================================== /* Default linker script, for normal executables */ OUTPUT_FORMAT(pei-i386) SEARCH_DIR("/mingw/mingw32/lib"); SEARCH_DIR("/mingw/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); ENTRY(_mainCRTStartup) SECTIONS and, even under a cygwin bash calling a mingw ld, this won't work if we're not on the drive on which /mingw was installed: $ pwd /cygdrive/d $ ld /mingw/lib/crt2.o -M | grep OUTPUT c:\MinGW\bin\ld.exe: /mingw/lib/crt2.o: No such file: No such file or directory whereas: $ cd c: $ ld /mingw/lib/crt2.o -M | grep OUTPUT .. OUTPUT(a.exe pei-i386) claus