问题描述:

 服务器扩充后(900G -》 2.7T) , Linux 代码交叉编译出现问题。

出现: Value too large for defined data type

(eCos产品编译虽然结果不同,但原理应该是一样的)

服务器采用了LVM分区,一个LV为2.7T挂载在home目录下,采用xfs文件系统。

编译出错日志如下:

服务器扩充后问题总结:Value too large for defined data type_服务器扩充

 

排除编译权限、代码完整性、依赖环境的问题, 分析可能是扩容后。分析为服务器的文件系统挂载,与编译器之间的兼容性问题:参考资料如下

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目录上。这个操作也不算复杂,只能说灵活性较差,但足以满足当前业务需求。