怎样评价 SDCC (Small Device C Compiler) 编译器套件

sdcc有个要命的缺陷...
gcc的编译参数-ffunction-sections -fdata-sections是必须打开的, 以及链接参数 -Wl,--gc-sections是必须要打开的, 这样源程序里没有被调用到的代码不会编译到最终的执行文件.
sdcc一直不支持, 结果目标文件会大得多, 用到用不到的代码都编译进来了. 有些sdcc下的库为了避免这个问题, 在每个源文件里只放一个函数, 代价是看着太累.


■网友
比較簡陋的一個編譯器,和avr-gcc、mspgcc這些GNU全家桶一樣,生成的代碼尺寸比Keil、IAR之流大,但也能湊合用用。
吐槽下自帶庫。之前嘗試使用8051部分自帶庫中的串口部分,找不到相關的幫助文檔;而且同樣一個串口收發功能,居然多個名字不同的源文檔,還需要用戶自己去挑選使用其中的某個;代碼質量是不錯,但是我把其生成的hex文檔燒錄到單晶片(STC89C52RC,兼容傳統8051)后居然沒有觀察到任何預期現象,一點反應也沒有,嚴重差評!

■网友
不太完整的评测体验如下:

1. 编译器一次只能编译一个文件。多个文件的工程需要掌握Makefile,否则非常麻烦。
2. sdcc对c99标准支持得比Keil C51更好,更像一个标准的C语言编译器。
【怎样评价 SDCC (Small Device C Compiler) 编译器套件】 3. 代码生成的体积还是比Keil C51大很多。


    推荐阅读