That is because mathematics libraries are not standardly (:P yuk! )
linked to programs.

add this to your gcc line:

-lm

that tells gcc to tell ld to link your program with some library file
named libm.so or libm.a (depending if it is shared or statically
linked...

On Tue, 2003-07-29 at 22:01, Buz Davis wrote:
> Hi,
> 
> I have encountered a problem that is undoubtedly a reflection
> of my ignorance of Linux.  In attempting to compile the following
> simple C program:
> 
> #include <stdio.h>
> #include <math.h>
> #include <stdlib.h>
> #include <unistd.h>
> 
> int main (int argc, char ** argv)
> {
> double x=102.3;
> 
> printf("square root of %f is %f\n",x,sqrt(x));
> return(1);
> 
> }
> 
> with the following statement:
> 
> 
> gcc -Wall -D_GNU_SOURCE testsqrt.c -o testsqrt.o
> 
> 
> I get these messages:
> 
> /tmp/ccLhrAjI.o(.text+0x2b): In function `main':
> : undefined reference to `sqrt'
> collect2: ld returned 1 exit status
> 
> According to the man page math.h is the correct header.
> Do I need to explicitly include a statement to the linker
> for the math library ?  If so, which is the appropriate
> lib ?  I have looked at libm.a (with ar -t) and don't find
> a sqrt.o in it (though there are several modules with sqrt
> within the name).
> 
> I am running a workstation install of RH9 - essentially
> right out of the box.  After I first encountered this message
> I did run up2date for the 3 RPMs dealing with glibc, but that
> didn't change things.  Otherwise everything is as it came off
> the install CDs.
> 
> Any help would be appreciated.
> 
> Thanks,
> 
> Buz Davis
> 
> _________________________________________________________________
> Add photos to your messages with MSN 8. Get 2 months FREE*.  
> http://join.msn.com/?page=features/featuredemail
> 


-- 
redhat-list mailing list
unsubscribe mailto:[EMAIL PROTECTED]
https://www.redhat.com/mailman/listinfo/redhat-list

Reply via email to