简介: 我们将 arm 板的交叉编译工具链从 32 位文件系统主机移至文件系统具有 inode > 2^32 的 64 位主机。使用gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf会导致错误
cc1plus: error: MYPATH: Value too large for defined data type
在哪里
$ stat MYPATH
...
Inode 9264879623
...
这个工具链是为 64 位主机编译的,为什么它不能处理 64 位 inode?
Long:
我们在 32 位主机上使用了gcc-linaro-arm-linux-gnueabihf-4.8-2014.04 。最初在迁移到 64 位文件主机后,我们设置enable_ino64=0
并继续使用旧工具链。然而,这只对单台机器有影响,最终我们希望工具链能在公司的所有机器上工作。
当所有源文件(顺便说一句)驻留在 inode <= 32 位的文件服务器上时,我们可以使用gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf成功编译代码。