嵌入式开发基础01:Ubuntu系统下简单C程序的编译和运行

概述:本文主要讲解Ubuntu系统下,运用vim、gcc、makefile工具编译、运行简单的C程序(输出“hello ,world”)及
返回两整型参数的求和)。

一、开发工具

1、 开发工具简介

(1)vim文本编辑器

vim拥有各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用,比那些没有模式的编辑器更加高效的进行文本编辑。同时VIM与很多快捷键设置和正则表达式类似,可以辅助记忆。

Vim具有三种模式:命令模式、插入模式、低行模式。运用vim命令直接打开文件默认是在命令模式下。
命令模式:不能直接编辑文本,输入的字母会被当作命令执行。

插入模式:在命令模式下输入字母i可切换到插入模式,在当前光标前输入,插入模式下按Esc可以返回命令模式。

低行模式:在此模式下可进行保存、字符替换等操作,低行模式命令以回车结束,或者以Esc返回命令模式。

vim编辑器进入指令

vim 文件名(带后缀)

编辑器打开文件在低行模式下

q!+回车 不保存退出
wq+回车 保存退出

命令模式下光标移动:

h 左移
l 右移
k 上移
j 下移
H 当前屏幕第一行
M 当前屏幕中间
L 当前屏幕最后一行

插入文本或行:

a 在当前光标位置的右边添加文本
i 在当前光标位置的左边添加文本
A 在当前行的末尾位置添加文本
I 在当前行的开始处添加文本(非空字符的行首)
O 在当前行的上面新建一行
o 在当前行的下面新建一行
R 替换(覆盖)当前光标位置及后面的若干文本\nJ 合并光标所在行及下一行为一行(依然在命令模式)

(2)gcc编译器

GCC即GUN Compiler Collection,是由GUN开发的编程语言编译器经拓展后,由只能处理C语言拓展为能够支持C++、java、Go以及各类处理器架构上的汇编语言等。现已被大多数类Unix操作系统(如Linux、BSD、MacOS X等)采纳为标准的编译器

在本文中,使用gcc编译C程序操作如下:

在hello.c文件保存后,在文件目录下打开命令窗口,输入命令:

gcc hello.c -o hello可以将hello.c文件编译链接为可执行文件hello.

然后通过命令./hello来运行可执行文件。(如果不指定文件名,如hello,gcc将生成名为a.out的文件,.out文件是用以区分编译后的文件,Linux下的可执行文件并没有标准的后缀,一般可执行文件没有后缀名。)

2、开发工具安装

在命令行中,执行以下命令完成开发工具的安装

sudo apt-get install vim
sudo apt-get install gcc

二、运行hello world程序

1、建立文件

使用vim建立一个新文件的命令格式为“vim 文件名”。使用命令建立一个hello.c的C语言源文件,并同时将文件打开,输入i进入插入模式,编写代码。

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

编辑完成后,按Esc进入普通模式后输入 :wq保存并退出vim编辑器

2、编译运行

输入命令

gcc hello.c -o hello

生成可执行的hello文件,输入指令

./hello

运行结果如下
在这里插入图片描述

三、Ubuntn系统与Windows系统下返回两整型参数和

1、建立文件

首先在vim中编写main.c文件(步骤如上),编辑内容如下:

#include<stdio.h>
extern float x2x(int x,int y);
int main()
{
int x,y;
printf("x=");scanf("%d",&x);
printf("y=");scanf("%d",&y);
float sum;
sum=x2x(x,y);
printf("sum=%f\n",sum);
return 0; 
}

编辑sub1.c文件,代码如下:

#include<stdio.h>
float x2x(int x,int y)
{
float sum;
sum=x+y;
return sum;
}

输入命令gcc -o main main.c subq.c与==./main==运行结果如下:
在这里插入图片描述

Windows 在dev集成开发环境下编译运行即可

四、Ubuntn系统下Makefile的使用

1、Makefile简介

Makefile是在Linux环境下 C/C++ 程序开发必须要掌握的一个工程管理文件,描述了整个工程的编译和链接等规则。

以下简单介绍以下Makefile文件的编写规则

target…:prerequisites…
command

target是一个目标文件,可以是Object File、执行文件或者一个标签(Label)。

prerequisites是要生成target所需要的文件或是目标。

command是make需要执行的命令。

2、Makefile的使用

依次输入命令gcc -c main.c与gcc -c sub1.c生成文件main.o和sub1.o.

然后,输入命令vim makefile在vim中编写makefile内容如下(makefile与main.c,sub1.c在同一目录下)
在这里插入图片描述
输入make与==./main==,得到最终结果如下:
在这里插入图片描述