错误现象
最近在研究使用合宙的CSDK开发4G联网产品,编译合宙的开源项目luatos-soc-2022出现如下错误:
error: gcc: error: unrecognized command line option '-mthumb'; did you mean '-mtbm'?
gcc: error: unrecognized command line option '-mapcs-frame'
gcc: error: unrecognized command line option '-mslow-flash-data'; did you mean '-fno-fast-math'?
> in project\example_mobile\src\example_mobile.c
warning: add_cxflags("-Werror=maybe-uninitialized") is ignored, please pass `{force = true}` or call `set_policy("check.auto_ignore_flags", false)` if you want to set it.
warning: add -v for getting more warnings ..
end
错误复现过程
编译该CSDK前需要安装相关编译环境,主要是交叉编译工具链GCC和xmake。两个工具下载好后,加入环境变量后重启电脑。然后修改CSDK中的build.bat文件。将文件中的GCC编译工具链路径修改正确。我的修改内容如下:
@echo off
set PROJECT_NAME=example
set LSPD_MODE=disable
rem you can set your gcc path
set GCC_PATH=E:\gcc-arm-none-eabi-10.3-2021.10
主要是修改上面代码的第五行要和实际解压的GCC工具链的目录一致。
然后执行这个build.bat文件就出现了文章开头的编译错误。
错误原因及解决
这个build.bat中其实最终是调用了xmake来构建编译代码,因为不懂xmake,最终联系了合宙技术支持,不得不说合宙的技术支持非常给力。最终了解到是因为新版本xmake引入的bug,没能正确识别工具链。CMD命令行中执行下这个代码
xmake update -s dev
然后删除CSDK目录下的.xmake文件夹重新编译就好了。
这个xmake update -s dev指令其实在xmake的官方文档也有解释。官方的描述是这样的:
如果xmake/core没动过,仅仅更新xmake的lua脚本改动,可以加
-s/--scriptonly
快速更新lua脚本xmake update -s dev
总结及相关参考链接
综上,所以安装xmake之后最好要先在cmd命令行中先执行下xmake updata -s dev指令更新下xmake的lua脚本。
最后放置下相关参考链接如下:
合宙EC618芯片平台CSDK项目地址:https://gitee.com/openLuat/luatos-soc-2022
合宙EC618芯片平台CSDK编译工具链环境搭建:https://doc.openluat.com/wiki/37?wiki_page_id=4556
GNU ARM 嵌入式工具链官方下载地址:https://developer.arm.com/downloads/-/gnu-rm
xmake官方下载链接:https://github.com/xmake-io/xmake/releases
xmake安装升级官方说明文档: https://xmake.io/#/zh-cn/guide/installation?id=%e6%9b%b4%e6%96%b0%e5%8d%87%e7%ba%a7
xmake官方帮助文档项目地址:https://github.com/xmake-io/xmake-docs/