Error: undefined reference to math functions
15,510
Solution 1
You have to use -lm
at link time.
Solution 2
Due to math library are not integrated in the standard gcc library because of integration issues with the kernel. you have to use -lm while compiling the code
Solution 3
This is because your math
library functions are not linked with the program. To link it compile with -lm
flag.
Author by
Rohit
Updated on June 05, 2022Comments
-
Rohit almost 2 years
This is function pointer program: demo.c
#include <stdio.h> #include <math.h> void tabulate(double (*f)(double), double first, double last, double incr); int main(void) { double final, increment, initial; printf("Enter initial value: "); scanf("%lf", &initial); printf("Enter final value: "); scanf("%lf", &final); printf("Enter increment: "); scanf("%lf", &increment); printf("\n x cos(x)" "\n ------- -------\n"); tabulate(cos, initial, final, increment); return 0; } void tabulate(double (*f)(double), double first, double last, double incr) { double x; int i, num_intervals; num_intervals = ceil((last - first)/incr); for(i=0; i<=num_intervals; i++) { x = first + i * incr; printf("%10.5f %10.5f\n", x, (*f)(x)); } }
When I try to run this code, got this message:
/tmp/ccQ4IZeD.o: In function `main': demo.c:(.text+0x92): undefined reference to `cos' /tmp/ccQ4IZeD.o: In function `tabulate': demo.c:(.text+0xe3): undefined reference to `ceil' collect2: error: ld returned 1 exit status
What does it means, because cos and ceil is
<math.h>
file function. Is this is because of OS (ubuntu 13.10 32-bits), because this program is work on else system.If it yes, then what solution is to run on my system.
-
Kninnug over 10 yearsYou also need to link with the
math
library, pass-lm
to your compiler. -
Shafik Yaghmour over 10 years@Rohit are you putting
-lm
after your source file, for examplegcc demo.c -lm
. -
Rohit over 10 yearsProblem solved, thanks.
-