一部分工程,会配置使用仅在GNU/Intel编译器工具链中支持的选项,针对这种情况使用毕昇编译器构建时,会发现如下格式的error:
1 | clang: error: unknown argument: '-fdec-math' |
此时需要在构建脚本中删去对应选项,或将其修改为毕昇编译器支持对应功能的选项(可以在源码根目录grep对应选项查看设置该选项的文件,并进行删除)。毕昇编译器从4.1.0起针对选项兼容新增处理,针对当前毕昇编译器不支持的选项:
1 | flang: warning: GNU flag '-finit-local-zero' is replaced by llvm flag '-finit-zero' automatically [-Wignored-optimization-argument] |
1 | clang: warning: GNU/Intel flag '-mno-low-precision-sqrt' is effective by default in llvm and ignored. |
1 | clang: warning: GNU optimization flag '-ftree-dse' is not supported and ignored. [-Wignored-optimization-argument] |
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 |
需要进行适配的选项包括但不限于上述选项,如您发现其他毕昇编译器不支持的选项,请及时向毕昇编译器团队反馈,反馈途径见问题反馈。