0

I am compiling lua using ARM GCC on ARM A53, and during link I get quit a lot error related to math library, for example:

/home/bruce/data/code/star2000e/3rdparty/lua/lua-5.3.5/src/lmathlib.c:71: undefined reference to `acos'
/ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/../lib/gcc/aarch64-none-elf/9.2.1/../../../../aarch64-none-elf/bin/ld: 3rdparty/lua/liblua.a(lmathlib.c.o): in function `math_atan':
/home/bruce/data/code/star2000e/3rdparty/lua/lua-5.3.5/src/lmathlib.c:78: undefined reference to `atan2'
/ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/../lib/gcc/aarch64-none-elf/9.2.1/../../../../aarch64-none-elf/bin/ld: 3rdparty/lua/liblua.a(lmathlib.c.o): in function `math_floor':
/home/bruce/data/code/star2000e/3rdparty/lua/lua-5.3.5/src/lmathlib.c:109: undefined reference to `floor'
/ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/../lib/gcc/aarch64-none-elf/9.2.1/../../../../aarch64-none-elf/bin/ld: 3rdparty/lua/liblua.a(lmathlib.c.o): in function `math_ceil':
/home/bruce/data/code/star2000e/3rdparty/lua/lua-5.3.5/src/lmathlib.c:120: undefined reference to `ceil'
/ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/../lib/gcc/aarch64-none-elf/9.2.1/../../../../aarch64-none-elf/bin/ld: 3rdparty/lua/liblua.a(lmathlib.c.o): in function `math_fmod':
/home/bruce/data/code/star2000e/3rdparty/lua/lua-5.3.5/src/lmathlib.c:138: undefined reference to `fmod'
/ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/../lib/gcc/aarch64-none-elf/9.2.1/../../../../aarch64-none-elf/bin/ld: 3rdparty/lua/liblua.a(lmathlib.c.o): in function `math_modf':
/home/bruce/data/code/star2000e/3rdparty/lua/lua-5.3.5/src/lmathlib.c:157: undefined reference to `ceil'
/ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/../lib/gcc/aarch64-none-elf/9.2.1/../../../../aarch64-none-elf/bin/ld: /home/bruce/data/code/star2000e/3rdparty/lua/lua-5.3.5/src/lmathlib.c:157: undefined reference to `floor'
/ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/../lib/gcc/aarch64-none-elf/9.2.1/../../../../aarch64-none-elf/bin/ld: 3rdparty/lua/liblua.a(lmathlib.c.o): in function `math_sqrt':
/home/bruce/data/code/star2000e/3rdparty/lua/lua-5.3.5/src/lmathlib.c:167: undefined reference to `sqrt'
/ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/../lib/gcc/aarch64-none-elf/9.2.1/../../../../aarch64-none-elf/bin/ld: 3rdparty/lua/liblua.a(lmathlib.c.o): in function `math_log':
/home/bruce/data/code/star2000e/3rdparty/lua/lua-5.3.5/src/lmathlib.c:183: undefined reference to `log'

I DO add '-lm' option during link, and I can find two libm.a find in the compiler home, at:

/ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/./aarch64-none-elf/lib/libm.a /ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/./aarch64-none-elf/lib/ilp32/libm.a

Below is the link command (I use CMAKE, link command is generated by CMAKE): /ux/cad/tools/ARM/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/aarch64-none-elf-gcc -g -nostartfiles -T /home/bruce/data/code/star2000e/project/star2000e/src/link_new.ld -Wl,-Map=star2000e.map -Wl,--gc-sections -specs=nosys.specs -Wl,-cref -lm CMakeFiles/star2000e.elf.dir/project/star2000e/src/boot_el1.s.o CMakeFiles/star2000e.elf.dir/project/star2000e/src/main_star2000e.c.o CMakeFiles/star2000e.elf.dir/project/star2000e/src/newlib_port.c.o CMakeFiles/star2000e.elf.dir/project/star2000e/src/vectors.c.o -o star2000e.elf sys/libsys.a 3rdparty/cmocka/libcmocka.a core/libcore.a bsp/board_v2/libbsp.a -lm sys/libsys.a core/lib/littlefs/liblittlefs.a 3rdparty/json/libjson.a 3rdparty/lua/liblua.a 3rdparty/sfud/libsfud.a bsp/board_v2/libbsp.a 3rdparty/sfud/libsfud.a driver/star2000_soc/libdriver_star2000.a arch/arm_a55/libcpu_arm.a

Egor Skriptunoff
  • 23,359
  • 2
  • 34
  • 64

0 Answers0