Hi everyone,
I'm programming an application for lpc2119 and need to do
complex mathematical calculations with values got from the
A/D-Converter. Therefore i need to include the math.h to be
able to call functions such as pow() or sqrt() ...
The linker-flag "-lm" to include the math-library is set.
(GNU ld version 2.14 20030612)
But using newlib version 1.12.0 and arm-elf-gcc 3.3.3 I get
several linker errors with undefined references to functions
the libm.a should provide.
<snip>
make -k all
arm-elf-ld -v -omain.prg ./crt0.o smon_main.o armVIC.o printf.o
-T./lpc2119.ld -Map map
/home/lpc2119/arm-elf/arm-elf/lib/libm.a(w_pow.o)(.text+0x80): In
function `pow':
/home/lpc2119/newlib-1.12.0/newlib/libm/math/w_pow.c:88: undefined
reference to `__eqdf2'
/home/lpc2119/arm-elf/bin/../arm-elf/lib/libm.a(w_
pow.o)(.text+0x128):/home/lpc2119/newlib-1.12.0/ne
wlib/libm/math/w_pow.c:108:
undefined reference to `__eqdf2'
[...] 8 lines more
/home/lpc2119/arm-elf/bin/../arm-elf/lib/libm.a(e_pow.o)(.text+0x4c8):
In function `__ieee754_pow':
/home/lpc2119/newlib-1.12.0/newlib/libm/math/e_pow.c:271: undefined
reference to `__gtdf2'
/home/lpc2119/arm-elf/bin/../arm-elf/lib/libm.a(e_
pow.o)(.text+0x98c):/home/lpc2119/newlib-1.12.0/ne
wlib/libm/math/e_pow.c:277:
undefined reference to `__ledf2'
[...] 4 lines more
In function `__ieee754_sqrt':
/home/lpc2119/newlib-1.12.0/newlib/libm/math/e_sqrt.c:180: undefined
reference to `__gtdf2'
GNU ld version 2.14 20030612
make: *** [main.prg] Errors 1
make: Target all not compiled due to errors.
</snip>
Any idea on fixing this?
Thanks in advance.
Markus Plessing
problems using math.h
Started by ●August 12, 2005
Reply by ●August 12, 20052005-08-12
I had similar problems. Then I changed the order of my linker flags
(and even duplicated them like: "-lm -lc -lgcc -lstdc++ -lm")...and it
worked. Good Luck!
Matthias
--- In lpc2000@lpc2..., "oemtyo" <plessing@e...> wrote:
> Hi everyone,
>
> I'm programming an application for lpc2119 and need to do
> complex mathematical calculations with values got from the
> A/D-Converter. Therefore i need to include the math.h to be
> able to call functions such as pow() or sqrt() ...
>
> The linker-flag "-lm" to include the math-library is set.
> (GNU ld version 2.14 20030612)
>
> But using newlib version 1.12.0 and arm-elf-gcc 3.3.3 I get
> several linker errors with undefined references to functions
> the libm.a should provide.
>
> <snip>
> make -k all
> arm-elf-ld -v -omain.prg ./crt0.o smon_main.o armVIC.o printf.o
> -T./lpc2119.ld -Map map
> /home/lpc2119/arm-elf/arm-elf/lib/libm.a(w_pow.o)(.text+0x80): In
> function `pow':
> /home/lpc2119/newlib-1.12.0/newlib/libm/math/w_pow.c:88: undefined
> reference to `__eqdf2'
> /home/lpc2119/arm-elf/bin/../arm-elf/lib/libm.a(w_
> pow.o)(.text+0x128):/home/lpc2119/newlib-1.12.0/ne
> wlib/libm/math/w_pow.c:108:
> undefined reference to `__eqdf2'
> [...] 8 lines more
> /home/lpc2119/arm-elf/bin/../arm-elf/lib/libm.a(e_pow.o)(.text+0x4c8):
> In function `__ieee754_pow':
> /home/lpc2119/newlib-1.12.0/newlib/libm/math/e_pow.c:271: undefined
> reference to `__gtdf2'
> /home/lpc2119/arm-elf/bin/../arm-elf/lib/libm.a(e_
> pow.o)(.text+0x98c):/home/lpc2119/newlib-1.12.0/ne
> wlib/libm/math/e_pow.c:277:
> undefined reference to `__ledf2'
> [...] 4 lines more
> In function `__ieee754_sqrt':
> /home/lpc2119/newlib-1.12.0/newlib/libm/math/e_sqrt.c:180: undefined
> reference to `__gtdf2'
> GNU ld version 2.14 20030612
> make: *** [main.prg] Errors 1
> make: Target all not compiled due to errors.
> </snip>
>
> Any idea on fixing this?
>
> Thanks in advance.
>
> Markus Plessing
(and even duplicated them like: "-lm -lc -lgcc -lstdc++ -lm")...and it
worked. Good Luck!
Matthias
--- In lpc2000@lpc2..., "oemtyo" <plessing@e...> wrote:
> Hi everyone,
>
> I'm programming an application for lpc2119 and need to do
> complex mathematical calculations with values got from the
> A/D-Converter. Therefore i need to include the math.h to be
> able to call functions such as pow() or sqrt() ...
>
> The linker-flag "-lm" to include the math-library is set.
> (GNU ld version 2.14 20030612)
>
> But using newlib version 1.12.0 and arm-elf-gcc 3.3.3 I get
> several linker errors with undefined references to functions
> the libm.a should provide.
>
> <snip>
> make -k all
> arm-elf-ld -v -omain.prg ./crt0.o smon_main.o armVIC.o printf.o
> -T./lpc2119.ld -Map map
> /home/lpc2119/arm-elf/arm-elf/lib/libm.a(w_pow.o)(.text+0x80): In
> function `pow':
> /home/lpc2119/newlib-1.12.0/newlib/libm/math/w_pow.c:88: undefined
> reference to `__eqdf2'
> /home/lpc2119/arm-elf/bin/../arm-elf/lib/libm.a(w_
> pow.o)(.text+0x128):/home/lpc2119/newlib-1.12.0/ne
> wlib/libm/math/w_pow.c:108:
> undefined reference to `__eqdf2'
> [...] 8 lines more
> /home/lpc2119/arm-elf/bin/../arm-elf/lib/libm.a(e_pow.o)(.text+0x4c8):
> In function `__ieee754_pow':
> /home/lpc2119/newlib-1.12.0/newlib/libm/math/e_pow.c:271: undefined
> reference to `__gtdf2'
> /home/lpc2119/arm-elf/bin/../arm-elf/lib/libm.a(e_
> pow.o)(.text+0x98c):/home/lpc2119/newlib-1.12.0/ne
> wlib/libm/math/e_pow.c:277:
> undefined reference to `__ledf2'
> [...] 4 lines more
> In function `__ieee754_sqrt':
> /home/lpc2119/newlib-1.12.0/newlib/libm/math/e_sqrt.c:180: undefined
> reference to `__gtdf2'
> GNU ld version 2.14 20030612
> make: *** [main.prg] Errors 1
> make: Target all not compiled due to errors.
> </snip>
>
> Any idea on fixing this?
>
> Thanks in advance.
>
> Markus Plessing
Reply by ●August 12, 20052005-08-12
--- In lpc2000@lpc2..., "wiese_matthias"
<wiese_matthias@y...>
wrote:
> I had similar problems. Then I changed the order of my linker flags
> (and even duplicated them like: "-lm -lc -lgcc -lstdc++ -lm")...and it
> worked. Good Luck!
> Matthias
Thanks Matthias, this change made the thing ...
But:
Is lpc2119 able to do this sort of floating point operations?
At the moment my app is stopping at the point pow() is used
and the extern watchdog is rebooting.
Thanks
Markus Plessing
wrote:
> I had similar problems. Then I changed the order of my linker flags
> (and even duplicated them like: "-lm -lc -lgcc -lstdc++ -lm")...and it
> worked. Good Luck!
> Matthias
Thanks Matthias, this change made the thing ...
But:
Is lpc2119 able to do this sort of floating point operations?
At the moment my app is stopping at the point pow() is used
and the extern watchdog is rebooting.
Thanks
Markus Plessing