找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1989|回复: 1
收起左侧

SSDC简单操作

[复制链接]
ID:51090 发表于 2014-9-24 22:17 | 显示全部楼层 |阅读模式
1. 单文件工程

    只有一个源代码文件的话,只需执行 sdcc foo.c 命令,就可将源代码编译成符合intel hex格式的代码了。

    期间sdcc会产生下列的输出文件:

            foo.asm          汇编代码,由编译器创建

            foo.lst             汇编列表文件,由汇编器创建

            foo.rst             更新过的列表文件,由链接器创建

            foo.sym           符号列表文件,由汇编器创建

            foo.rel/foo.o     就是obj文件

            foo.map           内存映射文件

            foo.mem          内存使用统计文件

            foo.ihx              intel hex格式的代码

    如果使用了调试模式,还会有:

           foo.adb             用于创建.cdb文件的含有调试信息的中间文件

           foo.cdb             用于调试的文件,有一个专门的文档讲这种文件的格式

           foo.                   Absolute Object Module Format(AOMF)文件

           foo.dump          用于调试编译器本身的dump文件



1.2 多文件工程

    假设main函数在foomain.c中,另外还有foo1.c和foo2.c,那么可以这样编译:

        sdcc -c foo1.c

        sdcc -c foo2.c

        sdcc foomain.c foo1.rel foo2.rel

    第三条命令也可以换成下面的两条命令:

        sdcc -c foomain.c

        sdcc foomain.rel foo1.rel foo2.rel

    如果是写成后面这种形式,最后一条命令中的第一个rel文件必须包含main函数



1.3 ihx文件的后处理

      .ihx文件不能直接用于里面烧,要经过一步处理:

       packihx foo.ihx > foo.hex

    这样foo.hex就可以拿去烧了



1.4 使用lib库

    如果要用到标准库之外的lib库,可以写这样的命令:

        sdcc foomain.c foolib.lib -L mylib

    -L选项指定库的搜索路径,可以是相对路径,也可以是绝对路径

    sdcc的lib文件都是纯文本,自带的标准库的内容是相关rel文件的列表

    用sdcclib做出来的lib是一种带标签的纯文本



1.5用sdcclib制作库

    假设一个库libfoo.lib包括libfoo1.c和libfoo2.c两个源代码文件,可以这样来生成libfoo.lib:

        sdcc -c libfoo1.c

        sdcc -c libfoo2.c

        sdcclib libfoo.lib libfoo1.rel

        sdcclib libfoo.lib libfoo2.rel

    这样得到libfoo.lib以后,还可以用

        sdcclib -s libfoo.lib

    查看库中包含的符号,或者用

        sdcclib -m libfoo.lib

    查看库中包含的rel文件的名字

回复

使用道具 举报

ID:76408 发表于 2015-4-8 10:48 | 显示全部楼层
明白了,解释清晰,赞一个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表