C51 开源编译器SDCC学习笔记-安装_sdcc安装-程序员宅基地

技术标签: 编译器  sdcc  C语言  80C51  嵌入式  

写在前面

为什么sdcc?

最近计划做个自动平衡车,用80C51做处理器,那自然就会想到用Keil系列工具。但作为一名创客老师,我还是想着尽量用开源的软件,几经搜索引擎跳转,关键词更换,找到了这个叫SDCC的。既然网络介绍的信息那么少,索性就边学边记录!希望这个软件可以代替Keil

嵌入式新人,喜欢的记得打赏小弟!

关于SDCC

SDCC官网的原话是这样子的:

SDCC is a retargettable, optimizing Standard C (ANSI C89, ISO C99, ISO C11) compiler suite that targets the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.)Maxim (formerly DallasDS80C390 variants, Freescale (formerly MotorolaHC08 based (hc08, s08)Zilog Z80 based MCUs (z80, z180, gbz80, Rabbit 2000/3000, Rabbit 3000A, TLCS-90)Padauk (pdk14, pdk15) and STMicroelectronics STM8. Work is in progress on supporting the Padauk (pdk13)Microchip PIC16 and PIC18 targets. It can be retargeted for other microprocessors.

看不懂没关系,因为我也不太明白。大概的意思是(如有不当,请指出):

SDCC致力于基于Intel MCS51微处理器的支持重定向、多标准C编译套件

SDCC 支持的c标准:ANSI C89/ IOS C99/ IOS C11(我只听过,不知道有啥区别)

比如这些MCU:

  • Intel: 8031,8032,8051,8052 等
  • Maxim (正式点:Dallas)的 DS80C390系列
  • Frescale (Motorola)基于HC08系列的(如hc08,s08)
  • 基于Zilog Z80系列的( z80, z180, gbz80, Rabbit 2000/3000, Rabbit 3000A , TLCS-90)
  • Padauk(pdk14, pdk15,截至发稿20200413:pdk13还在研发中)
  • Microchip的PIC16,PIC8

所以说,拿来开发C51是绰绰有余的!可以作为Keil的一个替代品

平台支持

官方支持平台(official supported)

  • 亲爹亲妈级别的: Linux, Mac (原生的使用了GCC编译出来的)
  • 干爹干妈级别的:Windows (是在Linux设备上使用mingw32编译出来的)

 

安装

我手头只有windows设备,虚拟了一个centos,搞了哪个我就写哪个。

Windows平台安装:

我的windows系统:Windows 10_64b (cmd里是这样描述的:Microsoft Windows [版本 10.0.18363.720],此处不随系统更新而更新)

一、下载

官网推荐去sourceforge下载:

https://sourceforge.net/projects/sdcc/files/

选择一个适合自己的版本,我选的sdcc-4.0.0-x64-setup.exe.

Windows习惯:双击运行。没啥特殊的,这里有两点:

  1. 文件安装位置
  2. 最后有个提示添加环境变量的,建议保留
  3. 后期的实际测试过程中,如果将软件安装到program Files文件夹下,cmd里执行编译的时候,会提示Program Files不是有效的命令。建议安装路径下没有空格字符/中文字符等特殊字符。

至此,安装完毕!回头测试的时候另外开文章!

我下载的时候挺慢的,这里把我下载的资源也放在下面。

安装后,打开cmd,输入sdcc --version可以看到版本信息(mingw都出来了,干爹干妈,没错!不过有的用就好)

C:\Users\Y>sdcc --version
SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ez80_z80/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8/pdk13/pdk14/pdk15 4.0.0 #11528 (MINGW64)
published under GNU General Public License (GPL)

Q&A

此处记录我安装后在使用过程中遇到的问题,遇到问题后,我尽量集中到这里

1. 安装到Program Files下无法正常使用:

直接把安装文件夹拷贝到根目录后,将新文件路径添加到环境变量下,编译成功。

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011408809/article/details/105498864

智能推荐

Multipathd Daemon was Unable to Set Options "fast_io_fail_tmo" or "dev_loss_tmo" Under UEK1 or RHCK_multipath rport failed to read dev_loss_tmo value -程序员宅基地

文章浏览阅读421次。Multipathd Daemon was Unable to Set Options "fast_io_fail_tmo" or "dev_loss_tmo" Under UEK1 or RHCK (文档 ID 1678794.1) APPLIES TO:Linux OS - Version Oracle Linux 5.7 with Unbreakable Enterprise Ker..._multipath rport failed to read dev_loss_tmo value error 2

Jython_Jython Development Tools (JyDT) for Eclipse_jythontools-程序员宅基地

文章浏览阅读729次。Installing JyDTThis section describes how to install JyDT by connecting to the JyDT update siteon the internet. If you have downloaded an update site to a computer on your network, please follow the_jythontools

验证结构中IMonitor的作用_验证 monitor组件的主要功能-程序员宅基地

文章浏览阅读922次。DUT 的 input 端口采用的monitor 是干嘛的呢?根据白书: 一,大型项目中,driver 根据协议发送数据,而monitor根据协议接收数据。如果driver和monitor由不同人实现,那么可以大大减少其中任意一方对协议理解的错误。二,便于复用???另外,我的一点理解是:用于判断是否真的将输入,打入了DUT。????就一般环境,IF与dri_验证 monitor组件的主要功能

kubernetes apiserver 报错 service-account-issuer is a required flag-程序员宅基地

文章浏览阅读1.8k次。k8s kube-apiserver 启动报错k8s 版本 1.24根据报错提示说的是是一个必须的参数我们来看一下这个参数是干啥的服务帐号令牌颁发者的标识符。 颁发者将在已办法令牌的 “iss” 声明中检查此标识符。 此值为字符串或 URI。 如果根据 OpenID Discovery 1.0 规范检查此选项不是有效的 URI,则即使特性门控设置为 true, ServiceAccountIssuerDiscovery 功能也将保持禁用状态。 强烈建议该值符合 OpenID 规范: https://_service-account-issuer

【CodeForces - 988C 】Equal Sums (思维,STLmap,STLset,tricks)_草莓^app^【755c.top】最新版-程序员宅基地

文章浏览阅读288次。题干:You are given kk sequences of integers. The length of the ii-th sequence equals to nini.You have to choose exactly two sequences ii and jj (i≠ji≠j) such that you can remove exactly one element ..._草莓^app^【755c.top】最新版

P1505 [国家集训队]旅游-程序员宅基地

文章浏览阅读90次。哈!树剖+线段树的水题!讲道理前面的那道“月下毛景树”已经把这种化边权为点权的考的淋漓尽致了。特别在于这些题的码量我早上就直接打了一遍,然后就美妙地WA了。下午再随便地打一遍,突然明白了早上错了哪里。重新摸一遍板子,交上去,A了。。。把早上那个唯一写错的地方改了,交上去,也A了。。。这个故事告诉我们细心写好当前的每一句代码是多么重要。不然你就要调得心态爆炸了哦这道题的线...

随便推点

Python学习笔记——pandas中get_dummies()的用法_python get_dummies-程序员宅基地

文章浏览阅读5.5k次,点赞5次,收藏14次。原文链接在此可以看到get_dummies默认就是所有变量都转了默认转了以后的变量用columns名_数值名表示其中参数predix:prefix : 给输出的列添加前缀,如prefix=“A”,输出的列会显示类似prefix_sep : 设置前缀跟分类的分隔符sepration,默认是下划线"_"df = pd.DataFrame([[‘green’ , ‘A’],[‘red’ , ‘B’],[‘blue’ , ‘A’]])pd.get_dummies(df,prefix = _python get_dummies

【政考网答疑】为什么公务员招录限制35岁以下?-程序员宅基地

文章浏览阅读934次。政考网每日一答,今日咱们讨论的问题是为什么公务员招录限制35岁以下?众所周知,无论是各地省考还是国考,均会要求考生年龄在18周岁以上、35周岁以下(应届硕士和博士经招录机关同意,可放宽到40岁),那么,公务员招录考试为何会限制35岁以下报考呢?这样的要求是否合理?1、高龄人员的可塑性相对不强相比较应届毕业生或者刚毕业不久的大学生,35以上的考生在身体素质上的优势并不明显,特别是一些基层岗位,条件艰苦,高龄考生的岗位匹配度相对较低。古语云,“三十而立,四十而不惑。”高龄考生已从过...

MySQL必知必会学习历程(一)_mysql编写新增教育经历-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏27次。MySQL必知必会学习历程第1章 了解SQL1.1 关键术语介绍第2章 MySQL简介2.1 关键术语介绍2.2 安装mysql命令行实用程序(可选)2.3 安装mysql_community(最优)2.3.1 下载mysql_community2.3.2 安装过程第3章 使用MySQL3.1 连接到数据库3.2 建立样例数据库3.2.1 创建空的数据库3.2.2 下载样例表生成脚本3.2.3 使用样例表生成脚本3.3 选择数据库(USE)3.4 了解数据库和表(SHOW)3.5 命令及注释汇总第4章 检索_mysql编写新增教育经历

你都用 Python 来做什么?_你用python做什么-程序员宅基地

文章浏览阅读1.3w次,点赞42次,收藏158次。你们都用python做些什么呢?在开发中 python 这一个语言就像是小叮当,而 python 的第三方库则是“百宝箱”,你只要想着对某一个方向进行开发,那么这个“百宝箱”就会给你想要的东西。由于我是在开发多年后接触到的 python,对我来说自从接触 python 就打开了“新世界”的大门。(我正在求设计做一张图,还没做完,做完贴上在这里)一、做个自己玩游戏的程序在前几年,我有一个朋友是一个“游戏商人”,不过大多数他是手动进行商品处理。他有一天找到我,跟我说“嗨兄弟,会不会做外G?”!此时我_你用python做什么

Wi-Fi简介-程序员宅基地

文章浏览阅读893次。 Wi-Fi俗称无线宽带.所谓Wi-Fi,其实就是IEEE 802.11b的别称,是由一个名为"无线以太网相容联盟"(Wireless Ethernet Compatibility Alliance, WECA)的组织所发布的业界术语,中文译为"无线相容认证".它是一种短程无线传输技术,能够在数百英尺范围内支持互联网接入的无线电信号.随著技术的发展,以及IEEE 802.11a 及IEEE 802.11g等标准的出现,现在IEEE 802.11这个标准已被统称作Wi-Fi.从应用层面来说,要使用W

mongo 批量修改自增id,并保存数据到新表_sails 更改mongo数据库id生成-程序员宅基地

文章浏览阅读337次。db.getCollection('202105_order').find().forEach(function(x){x['_id']=hex_md5(String(x._id)); db.getCollection('202105_orders').insert(x)})_sails 更改mongo数据库id生成