问题:
- 在 Uboot 中的 cmd 文件夹下添加了一个 whetstone.c 文件,里面包含了 math.h ,调用了 sin、cos、atan 之类的函数。
- 修改了 Makefile 使其会去编译这个 .c 文件。
- 编译会报
/brandy-2.0/u-boot-2018/cmd/sunxi_svudata.c:24: undefined reference to `sin'
我做了什么:
- 在 Uboot 的 cmd 文件夹下的 Makefile 中添加
obj-y += benchmark/whetstone/whetstone.o
- 删除 Makefile 里的 NOSTDINC_FLAGS 。
- 在 CC 宏的 gcc 后面加了个 -lm
- 修改了 Makefile 里的 CROSS_COMPILE ,修改为 prebuilt 中的那个编译链。
- 删除了 /u-boot-2018/include/log.h 中的 log 宏
我试了什么:
- 在 Makefile 的 PLATFORM_LIBGCC 后面加了个 -lm 。
- 在 Makefile 的 PLATFORM_LIBGCC 后面用 -L 指定了 libm.a 的目录
- 尝试了 prebuild 目录中 sysroot 下, lib64/lib64vxthread/lib64xthread 目录下的 lib64 和 lib64d/v 。
- 这种时候会报:
/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/sysroot/usr/lib64/lp64d/libm.a: error adding symbols: bad value
但是我直接自己写个 helloworld 带 math.h 用同一个工具链编译之后,丢到板子里在 linux 上跑,又完全没问题。
编译报错的 sunxi_svudata.c 这个文件是全志自己的文件,而且我看了一下 24 行也没有 sin 这个函数的调用。
有没有大佬知道这是个什么情况?