在自己构建的 Makefle系统中对 cortex-m33 代码编译时,在链接阶段总是报出下面问题
...
arm-none-eabi-ld: cannot find libgcc.a: No such file or directory
arm-none-eabi-ld: cannot find libc.a: No such file or directory
arm-none-eabi-ld: cannot find libm.a: No such file or directory
make: *** [Makefile:63: ra4m2.elf] Error 1
...
从报错信息可以看出来是没有找到对应 lib 文件,所以应该是链接脚本中没有设置正确库文件的路径,但是又不知道需要使用哪些库,及这些库的路径在哪里?
不过可以通过下面命令产看所使用的库符号:
arm-none-eabi-nm --defined-only ra4m2.elf
内容入下:
00007358 T __adddf3
00007b84 T __aeabi_cdcmpeq
00007b84 T __aeabi_cdcmple
00007b74 T __aeabi_cdrcmple
00007c24 T __aeabi_d2iz
00007358 T __aeabi_dadd
00007b94 T __aeabi_dcmpeq
00007bd0 T __aeabi_dcmpge
00007be4 T __aeabi_dcmpgt
00007bbc T __aeabi_dcmple
00007ba8 T __aeabi_dcmplt
00007bf8 T __aeabi_dcmpun
00007918 T __aeabi_ddiv
...
不过上面信息依然解决不了问题!!!
在继续搜索的过程中,查到了可以使用下面命令查看 arm-none-eabi-gcc
默认使用的库路径:
arm-none-eabi-gcc -print-search-dirs
这会打印出编译器默认搜索库的路径。
输出内容如下:
[11:18:11] (*^~^*) $ arm-none-eabi-gcc -print-search-dirs
install: /usr/lib/gcc/arm-none-eabi/10.4.2/
programs: =/usr/lib/gcc/arm-none-eabi/10.4.2/:/usr/lib/gcc/arm-none-eabi/10.4.2/:/usr/lib/gcc/arm-none-eabi/:/usr/lib/gcc/arm-none-eabi/10.4.2/:/usr/lib/gcc/arm-none-eabi/:/usr/lib/gcc/arm-none-eabi