|
发表于 2021-6-9 10:26:07
|
显示全部楼层
**** 以下为网络帖子内容摘录 *********
我在迁移一个项目使用AC6.12的过程中,主要还是参考《migration_and_compatibility_guide_100068_0612_00_en.pdf》文档进行参数修改,起初还算比较顺利,但是涉及到汇编代码的编译过程中死活编译会有问题。这里简单的记录下吧。我这里仍然使用armasm来编译之前的ARM语法格式的汇编代码。
修改汇编的编译参数时,一定要注意编译选项--cpreproc,该编译选项在AC5的含义是命令armasm调用armcc预处理输入的汇编源代码;在AC6的含义是命令armasm调用armclang预处理输入的汇编源代码。
我的工程,在使用AC5编译工具链时,在汇编过程中,使用的编译参数配置和armcc的编译参数配置是一样的,并且也添加了编译选项--cpreproc。
升级到AC6.12之后,因为armclang的编译参数和armcc的差异比较大,自然的就不能够直接用于armasm的配置,因此我按照AC5的armasm配置作为AC6.12armasm的配置,此时能够进行汇编,但是提示:armclang: fatal error: no target architecture given; use --target=arm-arm-none-eabi or --target=aarch64-arm-none-eabi。
当时我就在想,为什么我使用armasm编译汇编代码怎么会调用armclang呢,还以为编译工程的脚本有问题,检查了编译脚本也没发现问题,后来还是查看《migration_and_compatibility_guide_100068_0612_00_en.pdf》文档才有所收获。
原来在汇编过程中调用armclang是armasm的编译选项--cpreproc在作怪,该编译选项是命令armasm调用armclang预处理输入的汇编源代码。ARM Compile 6中armasm需要另一个编译选项--cpreproc_opts,用于填写armclang预处理汇编代码时的一些配置参数。由于先前没有配置--cpreproc_opts,当然的在使用armclang进行预处理时会提示armclang: fatal error: no target architecture given; use --target=arm-arm-none-eabi or --target=aarch64-arm-none-eabi。
问题解决办法:对armasm新增编译选项--cpreproc_opts,并且填写上armclang预处理汇编代码需要用到的一些配置信息。例如:
armasm --cpu=cortex-a9 --cpreproc --cpreproc_opts=--target=arm-arm-none-eabi,-mcpu=cortexa9,-D,DEF1,-D,DEF2 -I /path/to/includes1 -I /path/to/includes2 input.S
对于--cpreproc和--cpreproc_opts编译选项,可参考《migration_and_compatibility_guide_100068_0612_00_en.pdf》文档的 3.3 Command-line options for preprocessing assembly source code。
————————————————
|
|