开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

选项兼容问题

一部分工程,会配置使用仅在GNU/Intel编译器工具链中支持的选项,针对这种情况使用毕昇编译器构建时,会发现如下格式的error:

1
clang: error: unknown argument: '-fdec-math'

此时需要在构建脚本中删去对应选项,或将其修改为毕昇编译器支持对应功能的选项(可以在源码根目录grep对应选项查看设置该选项的文件,并进行删除)。毕昇编译器从4.1.0起针对选项兼容新增处理,针对当前毕昇编译器不支持的选项:

  • 若对应选项仅是命名存在差异,则毕昇编译器会自动进行替换并提示warning,例如-finit-local-zero选项,毕昇编译器会将其自动替换为-finit-zero,并提示如下warning:
    1
    flang: warning: GNU flag '-finit-local-zero' is replaced by llvm flag '-finit-zero' automatically [-Wignored-optimization-argument]
    
  • 若对应选项控制的行为毕昇编译器是默认使能的,则毕昇编译器会自动忽略该选项并提示warning,例如-mno-low-precision-sqrt选项,毕昇编译器会自动忽略该选项并提示如下warning:
    1
    clang: warning: GNU/Intel flag '-mno-low-precision-sqrt' is effective by default in llvm and ignored.
    
  • 若对应选项用于进行编译优化的控制,且当前毕昇编译器不支持完全对应功能的选项,则毕昇编译器会自动忽略该选项并提示warning,例如-ftree-dse选项,毕昇编译器会自动忽略并提示如下warning:
    1
    clang: warning: GNU optimization flag '-ftree-dse' is not supported and ignored. [-Wignored-optimization-argument]
    
  • 若对应选项用于进行编译过程中功能性的控制,且当前毕昇编译器不支持完全对应功能的选项,则毕昇编译器仍会提示error,但可以通过添加-fGNU-compatibility选项将该error降级为warning,例如-fdump-tree-all选项,毕昇编译器仍默认提示如下error:
    1
    clang: error: GNU functionality flag '-fdump-tree-all' is not supported, Try -fGNU-compatibility to ignore it.
    

    可以通过添加-fGNU-compatibility选项将该error降级为如下warning:

    1
    clang: warning: GNU functionality flag '-fdump-tree-all' is not supported Since -fGNU-compatibility is enabled, compiler ignore it autimatically [-Wignored-optimization-argument]
    

此外毕昇编译器也针对若干选项兼容的特殊场景做了处理,详见下表:

问题

选项解释

建议适配动作

不支持-mabi=lp64

毕昇编译器默认为lp64,且在毕昇编译器中-mabi=选项是其他含义。

4.1.0起,会直接忽略并提示warning

不支持-freg-struct-return

aarch64上不支持对应功能

4.1.0起,会直接忽略并提示warning

不支持-znow -Wl,-z now

标准的写法应为-z now或是-Wl,-z,now

4.1.0起,支持该用法

不支持使用-std=指定非当前源码语言对应的语言标准,例如编译C语言源码时添加-std=c++11选项

毕昇不支持对应使用方法。

4.1.0起,可以通过添加-fGNU-compatibility选项支持该用法

不支持-x SSE2 -axSSE2等指定x86后端的选项

毕昇当前不支持对应使用方法,且aarch64不支持对应后端

4.1.0起,若已额外设置-mcpu选项,则以-mcpu选项为准,若未设置-mcpu选项,则自动替换为-mcpu=native

需要进行适配的选项包括但不限于上述选项,如您发现其他毕昇编译器不支持的选项,请及时向毕昇编译器团队反馈,反馈途径见问题反馈