鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

源码迁移修改级别说明

表1 源码迁移修改级别说明

修改级别

说明

样例

规则项

为了您的程序能够在鲲鹏平台上运行,必须进行修改。

存在不支持的“-m64”编译选项,请替换为“-mabi=lp64”,否则会影响程序在鲲鹏平台上运行。

代码样例如下:

abc = -m64

修改方式样例如下:

abc = -mabi=lp64

建议项_优化类

不影响编译通过,但可能对运行性能或平台兼容性有一定影响,建议根据实际情况评估是否修改。

未添加“-march”编译选项,编译器仅使用最基础的指令集和通用优化,不会使用指令集扩展,并且无法充分利用鲲鹏平台硬件性能。

代码样例如下:

CFLAGS=-g3 -W -Wall -m3dnow -Wno-unused-but-set-variable -O4 -DVERSION="$(VERSION)" -DRELEASE="$(RELEASE)" -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -mpopcnt -msse4.2

修改方式样例如下:

CFLAGS=-g3 -W -Wall -m3dnow -Wno-unused-but-set-variable -O4 -DVERSION="$(VERSION)" -DRELEASE="$(RELEASE)" -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -mpopcnt -msse4.2 -march=armv8-a

建议项_规范类

不影响编译通过,但可能存在语法、精度或函数使用上的潜在兼容性问题,建议检查并调整。

为确保鲲鹏平台上普通字符的默认行为与x86平台一致,建议使用“-fsigned-char”显式指定有符号字符类型。

代码样例如下:

CFLAGS=-g3 -W -Wall -m32 -m3dnow -Wno-unused-but-set-variable -O0 -DDEBUG=1 -DVERSION="$(VERSION)" -DRELEASE="$(RELEASE)" -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -mpopcnt -msse4.2

修改方式样例如下:

CFLAGS=-g3 -W -Wall -m32 -m3dnow -Wno-unused-but-set-variable -O0 -DDEBUG=1 -DVERSION="$(VERSION)" -DRELEASE="$(RELEASE)" -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -mpopcnt -msse4.2 -fsigned-char

建议项_通用类

不影响编译通过,但为了提升代码的通用性和平台兼容性,推荐根据建议进行修改。

由于x86与鲲鹏平台在寄存器、操作数顺序、约束等方面存在差异,该代码在鲲鹏平台服务器上可能报错,建议进行适配修改。

代码样例如下:

_asm("crc32b %1, %0" : "+r"(crc) : "rm"(v));

修改方式样例如下:

#if defined(__x86_64__)
        _asm("crc32b %1, %0" : "+r"(crc) : "rm"(v));
#elif defined(__aarch64__)
    __asm__ __volatile__("crc32cb %w[c], %w[c], %w[v]":[c]"+r"(crc):[v]"r"(value));
#endif