一、基础编译选项
1.1 单源文件的编译
假设目前有一个源文件led.c,用来控制开发板做流水灯循环,可以用如下命令进行编译。
$sdcc led.c
编译完之后发现目录下好多生成的编译文件。其中led.rel是类似gcc中的led.o这样用于链接的对象文件,有所不同的是,led.rel中并不包含链接用的汇编代码,它包含在led.lst中。而led.ihx是用来烧写的hex文件,它的格式是intel hex规范。实际用于烧写的文件格式要根据烧写工具来定制,这一点之后再研究。
1.2 多源文件的编译
在另外一个项目中,共有4个源文件。key.c用来控制矩阵键盘,display.c用来操作点阵屏,uart.c用来实现串行通信,而main.c用来统一调用其他源文件里的函数。这几个源文件编译的方法是先将源文件编译成库,然后再统一链接。使用编译选项 -c 表示complier only,只编译不链接。
$sdcc -c key.c
$sdcc -c display.c
$sdcc -c uart.c
$sdcc main.c key.rel display.rel uart

本文是关于SDCC编译器的基础编译选项和生成的output文件的详细解读。内容涵盖单源文件和多源文件的编译、库文件链接,以及编译过程中产生的asm、lst、rst、sym、rel、map和mem等文件的作用,对于理解和优化代码编译过程以及资源占用分析十分有帮助。
最低0.47元/天 解锁文章
——基础编译选项&output files&spm=1001.2101.3001.5002&articleId=45332449&d=1&t=3&u=516057266ccd400b885f9d3802871c56)
7411

被折叠的 条评论
为什么被折叠?



