host 环境为 docker 下的 ubuntu 22.04,安装了 aarch64-linux-gnu-gcc(g++)-11。将远程 aarch64 的机器的 usr 和 lib 目录 rsync 到本机做 qt 交叉编译的 sysroot。 在编译到 3danimation 模块时报了一个问题:
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: /tmp/sysroot/usr/lib/aarch64-linux-gnu/libm.a(s_cbrt.o): in function `__cbrt':
(.text+0x34): undefined reference to `__frexp'
/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: (.text+0x118): undefined reference to `__ldexp'
collect2: error: ld returned 1 exit status
之后我单独创建了一个 cpp 文件用来测试,发现如果不指定 -L/tmp/sysroot/usr/lib/aarch64-linux-gnu 是可以编译成功的,反之带上就不行了。同样的代码也在远程机器上做了测试,可以编译成功。