C语言开发工具

开发工具和操作系统之间是相互促进的、相互发展的,操作系统离不开软件开发的支持,软件开发工具也离不开操作系统这个平台。Linux操作系统下Linux开发工具的开源方式,可以让大家拥有更多的资源,得到更多的信息,对软件工具的发展起到了更大的促进作用。

1、嵌入式Linux C语言开发概述

C语言的特点:

  • C语言具有出色的可移植性,能够在不同体系结构的软硬件平台上运行。
  • C语言具有简洁紧凑,使用灵活的语法机制,并能直接访问硬件。
  • C语言具有很高的运行效率。
    所以,很多操作系统的内核,系统软件等都是使用C语言编写的。在嵌入式Linux开发领域,C语言同样是使用最广泛的语言之一。

2、嵌入式Linux C开发环境

编辑工具:在Linux下编程,你不再拥有集成化环境,你可以使用类似于EDIT的工具——经典vi编辑器来编辑源文件。当然还有很多其他的更高档一点的。总之,编辑器和编译器是分开工作的。
编译工具:在Linux下支持大量的语言,有C、C++、Java等。在使用这些编译工具时,是使用命令方式的,也就是说,先用编辑工具输入源程序,然后执行一长串的命令进行编译。例如“gcc -o hello hello.c”。
调试工具:GDB是GNU开源组织发布的一个强大的Unix下调试程序工具。或许大家还是喜欢图形界面的,比如很多IDE的调试。但是在UNIX平台下,各有所长。
软件工具:一个大型软件总是由很多个源程序组成,为了能够将大量的编译命令做一次完成,Linux下提供了make各autoconf的工具分别用于大型软件的编译,以及编译前根据机器当前状态做相应的配置。
开发工具包:在Linux下提供了很多优秀的GNU C库函数,Motif函数库,GTK函数库、QT函数库等工具包。
项目管理工具:在Linux下还有CVS这样优秀的用于版本控制、管理的软件配置工具。

3、嵌入式文本编辑器

Linux上最常用的文本编辑器就是vi,Linux下一切都是文件,用户在使用计算机的时候,往往需要创建自己的文件,这些工作都离不开编辑器。
vi是Visual Interface的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作。
大家需要注意:在vi中没有排版,不能和word中一样,对字体字号格式段落进行配置,它只是一个文本编辑器,vi没有菜单,并且不支持鼠标操作,vi的创造者为了将程序员的双手全部放在键盘上,所以开发了很多命令。vi有三种基本工作模式:命令行模式、插入模式、底行模式。
当然,vi还有更高级的有vim,即改良版的vi,Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

(1)基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。控制屏幕光标的移动,字符、行或者字的删除,移动复制某区段以及进入其他模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。需要注意的是,这时候移动上下左右,计算机会哔哩哔哩叫。

以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
nx删除光标后面的n个字符
xX删除光标前面的n个字符
dd剪切一行
yy复制一行
nyy,ndd分别是复制n行、剪切n行,并且在屏幕下方会提示复制了多少行。
p粘贴
u撤销
ctrl+r取消撤销
G去文章的最后面
gg去文章的最前面
$去光标所在行的行尾
0或者^去光标所在行的行首
w下一个字
b上一个字
ctrl+b屏幕往后翻页
ctrl+f屏幕往前翻页
ctrl+u屏幕往后翻半页
ctrl+d屏幕往前翻半页
ctrl+g列出光标所在行的行号
需要注意的一点,这里的yy和dd是将vim里面的内容复制到缓冲区,并且系统的剪切板,只有右击复制才能复制到剪切板中,系统的剪切板不等于缓冲区,你这时候右击粘贴是不能粘贴yy过的内容。

: 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式
在命令模式下按下i就进入了输入模式。在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
底线命令模式:
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
x保存退出
wq保存退出
q!强制退出(不保存)
set nu 列出行号
/关键字 查找按住n后翻,N前翻,查到一个没有的关键字则可以取消高亮
按ESC键可随时退出底线命令模式。

当然了,这些命令用多了就习惯了,一时忘记了可以去百度查看,经常用到的也就那几个。

4、嵌入式编译器

1、gcc编译器
在Linux平台上,最流行的就是gcc编译器。
gcc可以为x86,ARM、MIPS等不同体系结构的硬件平台编译程序。
gcc可以编译C、C++、Java、Pascal等数十种高级语言。
gcc的编译效率要比其他编译器高出不少,所以使用的基本上都是gcc编译系统。

2、gcc命令常用选项和工作流程
gcc的使用格式:
gcc [选项] [文件名] [选项] [文件名]
(1)总体选项:用于控制编译的整个流程
-c: 对源文件进行编译或者汇编
-E: 对源文件进行预处理
-S: 对源文件进行编译
-o: 输出目标文件
-v: 显示编译阶段的命令
(2)语言选项:用于支持各种版本的C语言程序
-ansi: 支持符合ANSI标准的C程序
(3)警告选项:用于控制编译过程中产生的各种警告信息
-W:屏蔽所有的警告信息
-Wall:显示所有的警告信息
-Werror: 出现任何警告就停止编译
(4)调试选项:用于控制调试信息
-g: 产生调试信息
(5)连接器选项:用于控制链接过程
-static: 使用静态链接
-l library:链接library函数库文件
-L dir:指定连接器的搜索目录dir
-shared: 生成共享文件

在使用GCC编译程序时,编译过程可以被细分为四个阶段:

  • 预处理:处理所有以#开头的代码,头文件(展开)、宏定义(替换)、条件编译(打开或者关闭)
    gcc -E hello.c -o gello.i

  • 编译:把C代码转换成汇编代码,同时要进行语法检查,生成汇编代码
    gcc -S hello.i -o hello.s

  • 汇编:把汇编代码转换成二进制代码
    gcc -c hello.s -o hello.o

  • 链接:链接代码需要用到的库文件以及其他文件

  • gcc hello.o -o hello

例如:

//test.c
#include <stdio.h>
int main()
{printf("hello,world!\n");return 0;
}

1、预处理阶段:
由于在test.c中使用了头文件stdio.h,所以gcc在编译的时候首先要把头文件stdio.h中的内容加载到test.c中的首部。
输入命令:gcc -E test.c -o test.i
这时,我们查看一下test.i


test.i文件中的代码有很多行,但是stdio.h不见了,被替换掉了。
2、编译阶段
编译阶段是整个编译过程中最复杂的一个阶段,同时要进行语法检查,如果有语法错误,这一步会报错。
gcc -S test.i -o test.s
会生成汇编代码

3、汇编阶段
汇编阶段就是将汇编语言翻译成二进制文件,即目标文件。
gcc -c test.s -o test.o

4、链接阶段
目标文件虽然已经被CPU识别,但是单个目标文件一般是无法运行的。原因在于一个程序往往是由多个源文件组成的,每一个源文件只对应一个目标文件。链接阶段的任务就是把程序中的所有的目标文件和所需的库文件都链接在一起,最终生成一个可执行文件。
gcc test.o -o test.out

嵌入式Linux_C语言开发工具相关推荐

  1. L1D1:嵌入式Linux C语言开发工具及基础命令

    嵌入式Linux C语言开发工具及基础命令 一.ubuntu环境搭建 请自行准备VMware workstation15安装包 及 ubuntu18.04.iso镜像文件.可参考链接:VMware W ...

  2. c++整理程序 dev_C编程从入门到实践:C语言开发工具详解(2)

    DEV C++是一款经典的轻量级C语言开发工具,其安装大小只有几十兆,并且具有图形视图界面,操作比较容易.在DEV C++编码界面中可以使用复制和粘贴等命令,这提高了开发效率. 2.3.1安装DEV ...

  3. C语言开发工具(编译器|IDE)推荐

    常用的C语言开发工具有很多,每个开发工具所支持的库函数和对标准的实现都有差异.不过,对于初学者,可以忽略这些细节,选择一款使用广泛.上手容易的开发工具才是王道. Windows平台下推荐VC6.0或V ...

  4. Go 语言开发工具 LiteIDE X36 发布

    Go 语言开发工具 LiteIDE X36 发布,新增了编辑器路径导航工具栏,重构了 QuickOpen 插件,优化了快速打开文件和目录功能. ### 2019.03.15 Ver X36 * Lit ...

  5. 五款最棒的Go语言开发工具?

    新一代编程神语言Go, 由于其同时提供了开发效率与运行效率, 可谓是近几年在编程界最耀眼的新星, 越来越多的大神投入其中, 也越来越成熟, 开源库代码越来越多. 想必现在也有不少新手,或者有其他语言开 ...

  6. Go语言开发工具和插件

    目录 Goland IntelliJ Idea Eclipse Goland GoLand: A Clever IDE to Go by JetBrains IntelliJ Idea File> ...

  7. devc 如何编写java,Android For JNI(1)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序...

    Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...

  8. 【C语言从零到入门】第二节 C语言开发工具的安装

    工欲善其事,必先利其器. 要想学习C语言,第一步当然是安装C语言的开发工具,我们在这里选择Dev-C++作为开发工具 为什么选择Dev-C++ ? 小巧,Dev-C++的安装包仅48MB,且对电脑的配 ...

  9. C语言开发工具(开发环境)

    C语言开发工具(开发环境)   可以根据您的喜好选择下面任一款开发工具: Editplus+GCC/VC6 编译环境(绿色免安装版) (强烈推荐) Dev C++ 5.0 多国语言版 (4.9.9.2 ...

最新文章

  1. Palo Alto 防火墙升级 Software
  2. R语言ggplot2可视化:通过水平半小提琴图(Horizontal Half Violin Plots)和抖动数据点( jittered data)可视化雨云图(Rain Cloud plots)
  3. 在LoadRunner向远程Linux/Unix执行命令行并收集性能数据
  4. vscode tab键快捷生成元素html标签
  5. linux查看登录服务器的ip历史记录,通过登陆IP记录Linux所有用户登录所操作日志的方法...
  6. 2个 string 日期比较
  7. 西工大计算机学院交流,2017西工大计算机交流+精贵资料
  8. 苹果公司的企业文化_百度、苹果、脉脉等互联网大厂的企业文化衫还能这么潮?...
  9. [转] C#2010 在TreeView控件下显示路径下所有文件和文件夹
  10. X站全称是什么_科普|HDMI是什么意思?有什么用处?一文带你了解HDMI的发展史...
  11. 利用华为DTM将事件发送到Firebase
  12. 二分查找的平均查找长度
  13. html5 预览图片原理,html5实现图片预览和查看原图
  14. 从零开始学习3D可视化之数据对接(2)
  15. Microsoft Azure 建立虚拟机
  16. 【聚类算法】用Sklearn封装的KMeans | DBSCAN算法详解 |【问题解决】AttributeError: ‘NoneType‘ object has no attribute split
  17. 原生JS javascript解除绑定事件 JS删除绑定事件
  18. fast RCN论文笔记
  19. 「全网最细」:MRP1视图所有字段详解及实战应用 - 合集
  20. GO-获取斗鱼弹幕消息

热门文章

  1. 球员评历史最佳阵:乔丹魔术师坚如磐石詹皇选自己
  2. 适合女生的计算机配置,适合送女生的粉色台式电脑 2350元i3-8100配H310组装台式机配置推荐...
  3. Vue - Prop
  4. MacOS打开app慢 情况排查
  5. 快运和快递有哪些区别
  6. 写时拷贝技术(COW)
  7. 库文件、静态库(lib)与动态库(dll)的生成与使用
  8. python中fact用法_Python covariance.EllipticEnvelope方法代码示例
  9. html 右端对齐,html标题右对齐
  10. Android 欢迎界面停留3秒后进入登陆页面,输入登陆信息跳转到空白页面接收展示登陆页面内容