鲲鹏社区首页
中文
注册
如何将应用切换至毕昇编译构建

如何将应用切换至毕昇编译构建

DevKit

发表于 2023/12/12

0

应用切换编译器通常包含三个阶段:

修改编译器名称

编译器二进制的driver名称不同,以毕昇和GNU工具链为例,c编译器的名称分别为clang 和 gcc。

常见的场景如下:


适配编译选项

不同编译器对编译选项的支持度不同,毕昇在选项命名上与gcc基本保持一致,但仍有少量gcc选项,毕昇会因为没有提供对应的功能等原因不提供支持,需要修改适配。在允许的范围内,毕昇会持续改进支持或无感替换编译选项。

当前已知的一些需要适配的选项如下:

选项

选项解释

 建议适配动作

-fdec-math

毕昇直接支持对应功能,但没有控制选项

直接删除

-fallow-argument-mismatch

GCC用于关闭额外添加的检查的选项,毕昇未设置对应的检查

直接删除

-march=native

使用默认架构生效的指令集

换用-mtune=native

-ffpe-summary=xxx

浮点异常相关选项,aarch64上不支持浮点异常

直接删除

-freg-struct-return aarch64

上不支持对应功能

直接删除

-mabi=lp64

毕昇编译器默认为lp64

直接删除

-znow, --whole-archive, --no-whole-archive, -soname

对应参数毕昇需要额外添加-Wl选项指定传递给链接器 

例如-znow需要修改为-Wl,-znow

-print-multi-os-directory 

毕昇不支持通过该选项获得库的相对路径

更改为直接使用硬编码完成对应实现

-std=xxx 

毕昇不支持使用c语言标准编译cpp文件

删除对应选项

此处考虑到初学者,简要讲一下如何将选项加到构建工程当中。

常见的构建工程有GNU makefile 和 cmake 两种形式。

(1)对于makefile已经生成的工程,通常将选项使用CFLAGS、CXXFLAGS、FFLAGS 等环境变量中,与make指令一起使用。如:

a. CFLAGS=”-O3”make

b. 如果对makefile不熟悉,可以直接加到CC、CXX、CF 参数编译器后

c. CC=”clang -O3” make xxx

(2)对于cmake工程,可以在生成makefile前使用-DCMAKE_C_FLANGS、-DCMAKE_CXX_FLANGS、-DCMAKE_FC_FLANGS宏控制生成相关的选项。如:

a. cmake -DCMAKE_C_FLANGS=”-O3”

无论哪种方式,其本质都是让编译器接收到相关选项。常见的开源工程都会配备verbose模式用以检查当前的构建选项。可以使用make VERBOSE=1使能。

一个正常的构建指令则至少包括 编译器+目标编译文件+编译选项(可选)如:

clang test.c -O3

其中clang 是编译器前端,作为driver必须出现在第一个位置。test.c 是目标文件,必须指定通常由makefile规则指定。-O3 则是可选的优化选项。优化选项与目标文件的位置可以相互变换。 

根据适配情况调整代码

不同编译器对语法标准的支持度,以及语法规范的宽松度不同。毕昇当前对于语法检验严格程度相较于gcc较高,因此会对少量不符合语法规范的场景进行告警或报错,需要进行整改适配。

举例如下:

更多相关问题FAQ:

毕昇编译器3.1.0 兼容性手册

本页内容