makefile学习之编译器报错问题
1、当使用makefile自动推导的功能时编译器报错
ccJS7JEh.s: Assembler messages:
ccJS7JEh.s:5: Error: invalid instruction suffix for `push'
ccJS7JEh.s:7: Error: invalid instruction suffix for `push'
\ccJS7JEh.s:14: Error: operand type mismatch for `call'
ccJS7JEh.s:39: Error: invalid instruction suffix for `push'
百度了很多方法但是都没有看到有相关的说明,看到有的地方说(使用的是chatgpt)是版本不兼容导致,于是我看了下自己电脑里配置的环境,
发现了有wingw和之前其它的gcc版本,将wingw删除从和gcc多余的版本去除后编译正常
我怀疑主要是mingw的原因,因为wingw是64的我的gcc都是x86的,后面我将gcc另一个版本回退也正常了,所以这里主要是mingw造成的
2、第二次修改:
可以通过修改c/c++的编译器来解决该问题:
在vs code扩展里面进入c/c++的配置,搜索Compiler Path配置如下图,后重启打开vscode即可,第一个方法虽然可以,但是会导致vscdoe无法识别c库代码,提示很多警告而且导致无法在vs上运行,当然如果你是嵌入式开发直接只用makefile的话也不影响好这里gcc的环境需要在环境变量中先配置好
提供一个mingw版本:
https://blog.csdn.net/weixin_59243359/article/details/129219628