嵌入式开发1 目录
1.国内镜像源安装
Ubuntu系统一般采用 apt-get 命令进行某个软件的在线查找和安装,默认官方的软件源仓库位于国外,下载速度较慢。在这里可以选择更换国内的镜像源(如阿里云),操作步骤如下:
- 切换到主目录 。
cd /etc/apt
- 对源进行备份。
sudo cp sources.list sources.list.old
- 编辑源.
sudo nano sources.list
- 将文件中的内容全部删除(ctrl+k)。
- 更换源,以下有几种源选择,个人选用阿里云。
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
- 复制,粘贴保存退出。更新缓存
sudo apt-get update
- 更新完成。
2.输出hello world
1.安装vim编辑器与gcc编译器
输入命令 安装vim编辑器
sudo apt-get install vim
安装gcc编译器
sudo apt-get install gcc
2.vim命令使用
vim使用共分为三种模式,分别是命令模式、输入模式、底线命令模式。
启动vim,进入命令模式,此时敲击键盘会被vim识别为命令,而非输入字符。如此时按下i,并不会输入字符,而是被当作切换到输入模式的命令。
几个常用命令:
i 切换到输入模式,以输入字符
x 删除当前光标所处字符
: 切换到底线命令模式,在最底一行输入命令
ESC 退出输入模式,切换到命令模式
在底线命令模式中,基本的命令有:
q 退出程序
w 保存文件
在之后的部分我们会用到:wq!命令
惊叹号在vim中常常具有强制的意思
:wq!指储存后离开
如果为:wq! 则为强制存储后离开(常用)
3.生成hello.c
输入命令vim hello.c
进入vim编辑器,键入i,进入insert模式,编写代码。
#include<stdio.h>
int main()
{
printf("hello world!");
return 0;
}
编辑完成后,esc键,:wq!
保存并退出vim编辑。
4.编译hello.c
输入命令
gcc hello.c -o hello
此时会生成一个hello文件
输入./hello
即完成hello world的输出:
3.gcc编译程序
编译阶段 | 编译命令 | 实现作用 |
---|---|---|
汇编 | gcc -c hello.s -o hello.o | 将文件转换为目标文件 |
链接 | gcc hello.o -o hello | 将目标文件转换为可执行文件 |
3.输出两个整形变量的运算。(Windows与Linux)
要求:请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。
1.linux环境下编写
- 编写main1.c
#include"sub1.h" //包含头文件
int main()
{
int a=2,b=3; //定义x和y变量
int c;c=x2x(a,b);
printf("%.2f\n",c); //输出处理后的值,保留两位小数
return 0;
}
- 编写sub1.h头文件
#ifndef __SUB1_H
#define __SUB1_H
#include<stdio.h>
float x2x(int a,int b); //计算a+b的结果
#endif
- 编写sub1.c
#include "sub1.h"
float x2x(int a,int b)
{
float r;
r=a+b;
return r;
}
- gcc编译
1.命令:gcc -c sub1.c
将sub1.c转为目标文件sub1.o。
2.命令:gcc main1.c sub1.o -o main1
编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件。
3.执行./main1
命令,即可执行编译生成的main1程序。
运行结果为5.00。
2.Windows环境下编写
工具:Dev c++
- 编写main.c文件
#include <stdio.h>
#include "sub1.h"
int main()
{
int a,b;
a=2;b=3;
float r;
r=x2x(a,b);
printf("%.2f\n",r);
return 0;
}
- 编写sub1.h头文件
#include <stdio.h>
float x2x(int a,int b)
{
float r;
r=a+b;
return r;
}
运行结果为5.00。
4.用makefile编程主程序
在Shell脚本中使用make命令来进行编译,尤其在C/C++开发中,make命令通过makefile文件中描述源程序之间的依赖关系进行自动编译;
makefile文件是按照规定格式编写,需说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系;
很多大型项目的编译都是通过 Makefile 来组织的。
1.Makefile文件编写规则
target:prerequisites
command # command以一个tab键开始
# target为一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)
# prerequisites是需要生成target所依赖的文件或是目标
# command也就是make需要执行的命令。(任意的Shell命令)
目标不可省略,前置条件和命令可以二选一
目标可以是文件名,指明make命令所要构建的对象,也可以是某个操作名称。
如:
clean:
rm *.o
2.编写Makefile文件并编译
- 安装makefile
输入命令
sudo apt-get install make
- 编写makefile文件
main1:sub1.o main1.c
gcc main1.c sub1.o -o main1
sub1.o:sub1.c
gcc -c sub1.c -o sub1.o
clean:
rm *.o //执行make clean命令,实现对象文件的删除
总结
通过这次实验,我首先了解了如何更换镜像源,解决下载速度慢的问题;然后再了解了vim编辑器和gcc编译器的工作原理及常用命令后,通过编写相应文件,实现了helloworld输出、编写子程序运行等一系列操作,让我更加了解了虚拟机的运行机制。最后通过makefile的学习,我了解了如何通过编写可执行文件来进行已有程序的编译。