加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SDCC编译说明

(2012-12-17 14:20:52)
标签:

杂谈

分类: Linux学习
1.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文件不能直接用于miniICP的输入往LPC900里面烧,要经过一步处理:
       pachihx 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文件的名字

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有