This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: linking problems using gcc


Niklas,

First off, <http://cygwin.com/acronyms/#PCYMTNQREAIYR>.  Hint for Outlook
users: Google for "PCYMTNQREAIYR Outlook".  Thanks.

Secondly, you did not provide a minimal example that demonstrates the
problem.  Your statement makes no sense -- Cygwin does define (and use)
both rand() and srand() (see lines 104 and 109 of /usr/include/stdlib.h).
FWIW, so does MinGW (what you get when you pass a -mno-cygwin flag to gcc
-- see lines 348-349 of /usr/include/mingw/stdlib.h).  Note that both
Cygwin and MinGW headers declare rand() and srand() as __cdecl, so that
not including the appropriate header *will* hurt you during the link
phase.

Again, instead of trying to work around a problem that doesn't exist, and
calling the platform stupid for no apparent reasons, why not try to
actually add '#include <stdlib.h>' to the start of your file, and see if
that lets you use rand() and srand() normally?  And if that doesn't work,
please provide *the exact* command line that demonstrates the problem, and
*the exact* error you get from the linker, so that we know what problem
the approach below is trying to solve.

HTH,
	Igor

On Thu, 25 Nov 2004, Niklas Odenteg wrote:

> Hi Igor!
>
> Thanks for trying to help. I'll solve it. The stupid platform (windows
> or cygwin?) uses random and srandom instead of rand and srand!
> Everything in order to confuse the enemy right ;-)
>
> I solved it with these small statements below. Little messy, but it
> works.
>
> #ifndef MSDOS
> #include <unistd.h>
> #else
> #include <io.h>
> #define RAND
> #endif
> ....
> #ifdef RAND
> #define random rand
> #define srandom(s) srand(s)
> #endif
> ...
> #ifdef _LIBC
> 	extern int srandom();
> 	extern int random();
> 	extern unsigned long time();
> #endif
>
>
> Best
>
>   /N
>
>
> -----Original Message-----
> From: Igor Pechtchanski [mailto:pechtcha@XX.XXX.XXX]
> Sent: den 25 november 2004 17:25
> To: Niklas Odenteg
> Cc: cygwin@XXXXXX.XXX
> Subject: Re: linking problems using gcc
>
> On Thu, 25 Nov 2004, Niklas Odenteg wrote:
>
> > Hi!
> >
> > This may be a newbee Q, but I'll try anyway ;-)
> >
> > I trying to link a small C/C++ program and I got linking error on
> > time(), rand() and srand(). These should be part of libc right? So way
> > are they missing? Has cygwin some special libc implementation or
> > something???
> >
> > Confused programmer needs some help.
>
> Please post a small simple program that demonstrates the error, the
> exact command line you used to compile it, and the exact error you get
> from gcc.
>
> At a guess, you are missing some #includes, so the functions aren't
> declared as 'extern "C"', and are name-mangled, so the linker doesn't
> find them.

-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski, Ph.D.
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"The Sun will pass between the Earth and the Moon tonight for a total
Lunar eclipse..." -- WCBS Radio Newsbrief, Oct 27 2004, 12:01 pm EDT

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]