服务器扩充后(900G -》 2.7T) , Linux 代码交叉编译出现问题。
出现: Value too large for defined data type
(eCos产品编译虽然结果不同,但原理应该是一样的)
服务器采用了LVM分区,一个LV为2.7T挂载在home目录下,采用xfs文件系统。
编译出错日志如下:
排除编译权限、代码完整性、依赖环境的问题, 分析可能是扩容后。分析为服务器的文件系统挂载,与编译器之间的兼容性问题:参考资料如下
https://www.it610.com/article/5128654.htm
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44116
从BRCM 6755 能编译通过来看 (arm-gcc-5.5) , RTL产品(msdk-4.4.7-mips-EL)来看, 符合其分析的 4.6.x 以上编译器无此问题。
服务器挂载如下:
/dev/mapper/cl-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
解决方案:虽然LVM的分区方式可以非常灵活的进行服务器的扩容, 但是对于交叉编译来说(厂商的编译工具链比较老),会出现这种兼容问题。
采用了传统的逻辑分区,在2T中分出了23个分区,每人固定大小挂载各自的Home目录上。这个操作也不算复杂,只能说灵活性较差,但足以满足当前业务需求。