---
title: 如何将应用切换至毕昇编译构建-官方技术文章-鲲鹏社区
description: 了解如何将应用切换至毕昇编译构建
keywords: 如何将应用切,换至毕昇编译,构建,官方技术文章,鲲鹏社区,修改编译器名称,适配编译选项,根据适配情况调整代码
url: https://www.hikunpeng.com/developer/techArticles/20231212-6?envFlag=1
section: (其他)
---

# 如何将应用切换至毕昇编译构建-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20231212-6?envFlag=1
描述: 了解如何将应用切换至毕昇编译构建
关键词: 如何将应用切,换至毕昇编译,构建,官方技术文章,鲲鹏社区,修改编译器名称,适配编译选项,根据适配情况调整代码

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

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

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

故障案例

发表于 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 兼容性手册 [了解详情](https://www.hikunpeng.com/doc_center/source/zh/kunpengdevps/compiler/cm-bisheng/%E6%AF%95%E6%98%87%E7%BC%96%E8%AF%91%E5%99%A83.1.0%20%E5%85%BC%E5%AE%B9%E6%80%A7%E6%89%8B%E5%86%8C.pdf)

本页内容
