Some strange error appeared after I upgraded my Ubuntu from (10.11, 11.04 i dont know)
to 11.10.
I am getting an undefined reference to 'sqrt'
while using math.h and linking with -lm
I'm compiling with gcc -Wall -Werror -g -Iinclude/ -lm lib/matrix.c src/analyse.c -o bin/analyse.o
both source-files use and include math.h.
This code compiled without problems for and I didn't change much since the upgrade but now it won't work.
Do you have any suggestions what I can do, to find the error?
I'm sorry, if this question was asked before; there are so many posts on math linker errors and I didn't find a matching one
I found the same problem after upgrading my Ubuntu to 11.10 version. I use Netbeans for developing and solved the problem by specifying the "Mathematics" standard library as it follows:
Right click on project, click on Properties, select "Linker" on menu, click on "Libraries" and then "Add Standard Library" choosing "Mathematics".
When compiling the '-lm' option is placed after all the other options and it works. Probably this gcc version follows a specific architecture and it expects the libraries at the end of the command compiling line.
Cheers!
D.
This is a problem due to the default activation of the gcc flag
--as-needed
in the linkerMore information here: http://www.gentoo.org/proj/en/qa/asneeded.xml
Simple fix (worked for me at least):
Add
-Wl,--no-as-needed
to the linkerjust try..........☻
The library that you are using needs to be placed after the files that use it when you are using it from the command line. So place
-lm
on after your C files on the command line.Reference
SOLVED, this is not the common missing -lm problem! I'm in the same situation after upgrade to (k)ubuntu 11.10!
You really HAVE TO place the -lm swith after -o foo foo.c parameter
So swap your flags in Makefile! GUYS. This is pretty new (and serious) BUG!