C语言编程

  • 概述
  • 环境
    • 在Windows上构建C语言的环境
      • 安装
      • 在“MinGW”中运行C程序
    • 在Mac上构建C语言的环境
      • 安装
      • 文本编辑器的工作
      • 在终端的操作
      • 结束语

概述

“C语言”被称为适合嵌入式系统开发的编程语言之一。
C语言在一般的编程中也是熟悉的开发语言,但实际上,如果试着使用C语言制作微型计算机的控制程序等,就必须使用与“普通的C程序”不同的使用方法。

作为一般的C语言的学习方法,使用“printf”“scanf”等标准函数的程序开发是固定的,但这些都是以UNIX和Windows等环境上的应用程序开发为前提的。
对此,没有显示器和键盘的嵌入式系统的微型计算机控制程序,该如何迈出学习的第一步呢?

环境

在Windows上构建C语言的环境

安装

首先,让我们建立C语言的开发环境。
任何用于解决问题的C语言都可以,这里我们将介绍“MinGW(Minimalist GNU For Windows)”。

当您在PC上安装此MinGW时,您将在Windows上使用UNIX软件开发环境“GCC(The GNU Compiler Collection)”。
首先,访问MinGW网站,然后从屏幕顶部的菜单中单击“下载”选项卡。

在下一个屏幕上,单击“Download mingw-get-setup.exe(86.5kB)”链接,安装程序将被下载。
下载完成后,让我们运行“mingw-get-setup.exe”文件。

安装程序请按照以下步骤进行。
(1)显示“MinGW Installation Manager Setup Tool”对话框后,单击“Install”按钮。
(2)在下面的“步骤1:Specify Installation Preferences”屏幕上,指定要安装MinGW的目录。
在这里,安装默认的“C:\MinGW”。
此外,还有在开始菜单和桌面上创建图标的检查。
这一次,全部保持默认状态,单击Continue按钮。
(3)然后自动开始下载“MinGW Installation Manager”。
当下载处理达到100%时,单击Continue按钮。
(4)这次将重新打开“MinGW Installation Manager”对话框。
在这里,选择要安装的软件包。
用鼠标右键单击软件包名称的复选框将显示菜单。
在此,选择Mark for Installation将安装软件包。
如下图3所示,选择C和C++编译器,然后选择MSYS。

(5)然后从菜单中单击“Installation”-“Apply Changes”。
然后,您将看到“Pending Actions Schedule of Pending Actions”对话框,在此按下Apply按钮,开始下载Parkage和安装MinGW。
安装完成后,会显示消息“All changes were applied successfully;you may now close this dialogue.”,所以单击“Close”按钮,此外,MinGW Installation Manager也用“×”按钮关闭。
安装完成了。

在这一点上,您可能会注意到,不幸的是,开始菜单或桌面上没有显示MinGW图标。
这可能是安装程序故障的原因。
因为没有办法,直接双击“C:\MinGW\msys\1.0\msys.bat”,启动MinGW。
另外,在这个时候,在PC的桌面上制作“msys.bat”的快捷方式会很方便。
MinGW启动后,将显示以下屏幕:
在这里,您将使用UNIX命令操作计算机。
例如,输入“退出”并按“Enter”键关闭窗口。

在“MinGW”中运行C程序

让我们立即运行C程序。
在文本编辑器中输入以下C程序。

#include <stdio.h>int main(void)
{printf("hello world\n");return 0;
}

如果默认安装MinGW,则“C:\MinGW\msys\1.0\home\用户名”将成为主目录。
让我们在这里保存程序“hello.c”。

现在,我在这里编译“hello.c”,但现在的MinGW错误地设置了“gcc”命令的路径。
因此,在文本编辑器中打开“C:\MinGW\msys\1.0\etc\profile”,进行如下修正

第19行

export PATH=".:/usr/local/bin:/c/mingw/bin:/bin:$PATH"

第21行

export PATH=".:/usr/local/bin:/bin:/c/mingw/bin:$PATH"

MinGW是UNIX的世界,所以与Windows的换行代码不同,记事本不能很好地换行。
笔者使用的是“TeraPad”,预先准备好可以编辑UNIX文本文件的文本编辑器。
那么,让我们运行C程序。
启动MinGW并尝试运行“gcc”命令。

“gcc”命令可以很好地使用。
然后编译并运行“hello.c”。

在Mac上构建C语言的环境

安装

毕竟C语言不能默认运行,所以我们会在终端工作。
终端在Finder>应用程序>实用程序>终端中打开。

$ xcode-select --install

运行此命令会要求您安装它,所以单击安装。
之后,您也同意许可并完成安装。
确认gcc是否进入。

$ gcc -v

文本编辑器的工作

新建hello.c文件,输入下面的命令

$ vi hello.c

在这里,我写一个输出Hello,world的程序。

#include <stdio.h>int main (void){printf("Hello,world!\n");return 0;
}

然后,保存退出

:wq

在终端的操作

启动终端,运行刚才创建的hello.c。
首先编译hello.c

$ gcc hello.c

如果没有错误,就不会显示任何东西。
然后执行

$ ./a.out

结束语

和Windows不同,可以很容易地进行环境构筑。
用命令的操作最初很难,但是随着学习,必须使用命令的情况和Linux处理的场面变多了,所以稍微练习一下也是好的。

嵌入式开发语言-C语言编程相关推荐

  1. 嵌入式开发板CAN通信编程——伺服电机驱动

    嵌入式开发板CAN通信编程--伺服电机驱动 在实际的嵌入式项目开发过程中,若不涉及上位机与开发板的通信传输数据,那最关键的无非就是两个内容,读取传感器的数据并处理,驱动硬件设备工作.传感器数据的读取内 ...

  2. 嵌入式开发中C语言编程要点简述!

    在嵌入式Linux的C语言开发中,C语言的基本编程依然是最重要的内容.除此之外,与一般的C语言编程相比,嵌入式Linux的C语言编程有以下一些要点: 1.库函数与系统调用 在进行C语言编程的时候,使用 ...

  3. c语言嵌入式开发键盘,C语言嵌入式系统编程修炼之键盘操作篇

    功能键的问题在于,用户界面并非固定的,用户功能键的选择将使屏幕画面处于不同的显示状态下. 处理功能键 功能键的问题在于,用户界面并非固定的,用户功能键的选择将使屏幕画面处于不同的显示状态下.例如,主画 ...

  4. ​嵌入式开发为什么选择C语言?

    从语言特点来说 C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行. 简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和C语言汇编属于低级语言,难以完成一些复杂 ...

  5. 【嵌入式开发】C语言 命令行参数 函数指针 gdb调试

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...

  6. 【嵌入式开发】C语言 指针数组 多维数组

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21402047 . 1. 地址算数运算示例 指针算数运算 ...

  7. 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析

    . Android源码看的鸭梨大啊, 补一下C语言基础 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/detai ...

  8. 嵌入式开发和c/c++编程经验总结

    接触单片机和C语言已经十多年了,接触linux和嵌入式也有7-8年.见过不带界面的linux系统,树莓派和ubuntu等常见系统,还有fedora,centos等主要不常见的linux系统. 从最开始 ...

  9. 嵌入式开发第二阶段,系统编程

    第二阶段课程,属于linux下高级编程,也叫linux系统编程,感知linux内核的存在和内核的强大功能: 内容包括:文件管理.进程管理.设备管理.内存管理.网络管理. 目录 第一章.文件管理 一.文 ...

  10. uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言

    分享本文,介绍下更接近硬件底层的C语言与汇编,解释 CPU 如何执行代码. 高级语言与低级语言 学习编程其实就是学习与计算机交流的语言.因为计算机不理解人类语言,通过编译器把人类写的代码转成二进制代码 ...

最新文章

  1. php global 作用,PHP关键字global在定义变量中的作用_PHP教程
  2. Leetcode 160. 相交链表 解题思路及C++实现
  3. 以HANA为核心 SAP实时数据平台详解
  4. Android入门(11)| 全局广播与本地广播
  5. 初学SpringBoot之三
  6. C语言向文件写入内容并读取显示
  7. Linux: terminal 终端生存指南
  8. matlab 拉普拉斯锐化函数_机器视觉 03.3 频域高通滤波(锐化)
  9. es6—变量的解构赋值
  10. 在Eclipse中通过axis2调用网络免费webService服务
  11. 使用计算机的硬件及参数,硬件参数怎么看?如何选配电脑硬件?
  12. php 判断邮箱_php检测邮箱地址是否存在
  13. Windows界面编程第十二篇 位图显示特效 飞入效果与伸展效果
  14. 一个简单的java程序
  15. 电脑能登录微信,但网页打不开
  16. nRF24L01的发送性能优化
  17. react native 文本只显示两行
  18. 小米盒子,一个说皇帝没穿衣服的小孩
  19. PS4合金装备5服务器维护,《合金装备5:幻痛》ps4联机网络设置方法介绍
  20. Cockos REAPER 6.6 WiN+MAC 小巧的音乐制作宿主软件

热门文章

  1. ssm整合开发配置文件
  2. 剑桥A1-C2单词表-01
  3. 计算机网络设计前三层实验,基于Packet Tracer的计算机网络实验设计
  4. 手摇计算机发展年代,你知道“手摇式”的计算机吗?你肯定不知道
  5. python 扩展c extention
  6. 12个同父异母的孩子都有自闭症,简历造假的捐精者吸引了全球顶级专家
  7. MySQL存储IP字段类型
  8. 存储服务器在监控中的作用,监控项目中存储服务器IPSAN云存储方案的优劣势对比...
  9. 阿里云API请求签名失败的解决办法
  10. 地图定位技术揭秘(三)