It's a link-time error; you need to add '-lm' to your command line in order to pull in the math library.
I started using Knoppix (3.3) some days ago, mainly to write C-programs (but I'm liking it more&more, also for the rest of the package!).
I am, however, experiencing problems in compiling programs that use <math.h>. F.i.:
Won't compile, giving:Code:#include <stdio.h> #include <math.h> int main(){ printf("%f\n",sqrt(123.456)); return 0; }
Can someone explain what's going wrong? I have no problems including <ctype.h> or <string.h>.Code:knoppix@ttyp0[test]$ gcc test.c /tmp/cc8Hr3am.o(.text+0x1a): In function `main': : undefined reference to `sqrt' collect2: ld returned 1 exit status
I'm a complete Linux noob, so please help me...
It's a link-time error; you need to add '-lm' to your command line in order to pull in the math library.
Thx very much! It worked!
Are there more problems to be expected when including standard header files? Is -lm always enough to cure these kind of linking problems?
And more important: where can I find info on these matters?
Thx in advance.
These are not problems, just the way the C compiler works on pretty much every unix system. -lm is a shortcut meaning you want the linker to look in standard places for a library called libm.a. On linux, tens of libraries live under /usr/lib, amongst which the default libc.a. If you wanted to link against say libcups.a, you could similarly specify -lcups. If you want to see what's in a library , use ar (eg "ar -tvf /usr/lib/libm.a").
As to where to look for information, I'm afraid the references I might give you would be embarassingly outdated (hints: Kernighan & Richie, Kernighan & Pike, Rochkind, Stevens). Just google for "unix programming". Have fun ... and be prepared for what might become a long journey!
Thanks again!
I'm not afraid of a long journey!
1U IBM x3550 M5 4 Bay SFF SAS3 Server 2x E5-2683 V3 28 Core 128GB DDR4 2x Tray
$318.00
IBM SYSTEM x3650 M4 Xeon E5-2609 2.40GHZ 16GB DDR3-1066MHZ 2x 550W PSU TESTED
$109.95
IBM Power S822 8284-22A 12SFF Power8 3.89GHz 6Core 64GB RAM No HDD Server System
$359.99
IBM Power S822 12-Bay Server System Power8 Core 3.42Ghz DVD-Rom Drive 64GB No HD
$399.99
IBM SYSTEM x3200 M2 Server - HDD wiped, No OS
$75.00
IBM Power8 S822L 20-Core 3.42GHz 256Gb 1.2Tb 40G Elastic Storage Server 5148-22L
$599.95
$66.50
IBM AC1 7870 BladeCenter Blade Server 2*Xeon X5570 2.93GHz 12GB SEE NOTES
$11.13
IBM Lenovo X3650 M5 2U 8x 2.5” CTO Rack Server – 2x HS, 2x 750W
$199.00
IBM System X3650 Server M2 2 x Xeon X5570 2.93 Ghz w/128 GB/DVDRW
$169.99