From: David Starks-Browning Date: Tue, 12 Dec 2000 16:05:30 +0000 (+0000) Subject: add tip about -lm order to WinMail@16 entry X-Git-Tag: newlib-1_9_0~16 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=5c8836b9166c412580ca33ffd81df406d5291633;p=newlib-cygwin.git add tip about -lm order to WinMail@16 entry --- diff --git a/winsup/doc/how-programming.texinfo b/winsup/doc/how-programming.texinfo index 4045900c8..6b30463b9 100644 --- a/winsup/doc/how-programming.texinfo +++ b/winsup/doc/how-programming.texinfo @@ -44,13 +44,31 @@ MAKE_MODE to "UNIX" (actually case is not significant) or "WIN32" (actually anything other than "UNIX"). You can also specify the options --unix or --win32 on the make command line. -@subsection Why the undefined reference to "WinMain@@16"? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} +@subsection Why the undefined reference to @samp{WinMain@@16}? Try adding an empty main() function to one of your sources. +Or, perhaps you have @samp{-lm} too early in the link command line. It +should be at the end: + +@example + bash$ gcc hello.c -lm + bash$ ./a.exe + Hello World! +@end example + +works, but + +@example + bash$ gcc -lm hello.c + /c/TEMP/ccjLEGlU.o(.text+0x10):hello.c: multiple definition of `main' + /usr/lib/libm.a(libcmain.o)(.text+0x0):libcmain.c: first defined here + /usr/lib/libm.a(libcmain.o)(.text+0x6a):libcmain.c: undefined reference to `WinMain@16' + collect2: ld returned 1 exit status +@end example + +This is an artifact of libm.a being a symbolic link to libcygwin.a. + @subsection How do I use Win32 API calls? @strong{(Please note: This section has not yet been updated for the latest