【嵌入式学习01】在Ubuntu系统下编译C程序
本文主要目的是为了通过在Ubuntu18.04系统上叙述编译C程序的详细流程并且熟悉在Linux系统上编写C程序的操作语句及其写法采用两种方式进行编译即gcc编译和Makefile文件编译。
本文主要目的是为了通过在Ubuntu系统上叙述编译C程序的详细流程并且熟悉在Linux系统上编写C程序的操作语句及其写法采用两种方式进行编译即gcc编译和Makefile文件编译。
一、环境配置
虚拟机软件VMware Ubuntu
二、相关参数的配置
1.设置虚拟机的网络适配器为NAT模式
选择 虚拟机->设置->网络适配器->NAT模式
2. 将apt源改为阿里源
使用Linux的Ubuntu时会很卡,需要更换为阿里源来提高下载安装效率。修改系统默认自带的 apt 源,采用的是阿里源。
首先 备份旧源文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
接着使查看系统内核号:
sudo lsb_release -a
这里的xenial 为系统内核版本。
接着修改 apt 源为阿里源:
sudo gedit /etc/apt/sources.list
删除原文件内容,修改内容如下:
deb http://mirrors.aliyun.com/ubuntu/ version main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ version-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ version-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ version-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ version-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ version main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ version-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ version-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ version-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ version-backports main restricted universe multiverse
接着修改文件里的内核版本号为你系统的版本号,将 version 替换为系统内核号即可。
刷新 apt 列表:
sudo apt update
等待进度条加载完毕
sudo apt-get upgrade
三、编写输出hello world的C程序
1.安装gcc和vim
先更新
sudo apt-get update
安装gcc
sudo apt-get install gcc
检查是否安装成功,查看gcc版本
gcc --version
当出现版本信息时,安装成功,若没有安装成功,注意查看网路是否顺畅,多试几次,或者重启虚拟机。
安装vim编辑器
sudo apt-get install vim
2.vim的三种模式
分别是命令模式,输入模式和底线命令模式。
命令模式:
启动 vim 后,进入命令模式。
以下是常用的几个命令:
i 切换到输入模式。
x 删除当前光标所在处的字符。
: 切换到底线命令模式。
若要编辑文本:启动Vim,进入了命令模式,按下 i,切换输入模式。
输入模式:
在命令模式下,按 i 进入输入模式。
字符按键 + Shift,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
ESC,退出输入模式,切换到命令模式
底线命令模式:
在底线命令模式中,基本的命令有(已省略冒号)
q 退出程序
w 保存文件
按ESC键可随时退出底线命令模式。
3.编写hello.c文件
编写hello.c 输入命令
vim hello.c
进入vim编辑器,键入i,进入insert模式,编写代码
#include<stdio.h>
int main()
{
printf("hello world");
return 0;
}
esc键(编译完成):wq! 退出vim编辑。
输入命令
gcc hello.c -o hello
此时会生成hello文件
输入
./hello
四、在ubuntu系统和windows系统分别编译主程序main1.c 并运行
1.ubuntu系统用gcc 命令行方式编译主程序main1.c 并运行
要求求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。
进入vim编辑器,键入i,进入insert模式,
vim main1.c
编写代码
#include<stdio.h>
extern float x2x(int x,int y)
int main()
{
int x,y;
x=30;
y=2;
float a;
a=x2x(x,y);
printf("%f",a);
return 0;
}
进入编辑模式
vim sub1.h
编写代码
#include <stdio.h>
float x2x(int x,int y)
{
float a;
a=x/y;
return a;
}
gcc命令编译,采用多个文件一起编译,输出放在main1中
gcc main1.c sub1.h -o main1
./main1 :用来执行文件
2.在windows系统下编译主程序main1.c 并运行
使用DEV C++进行编译编写main1.c文件
#include <stdio.h>
#include "sub1.h"
int main()
{
int x,y;
x=30;y=2;
float a;
a=x2x(x,y);
printf("%f",a);
return 0;
}
编写sub1.h头文件
#include <stdio.h>
float x2x(int x,int y)
{
float a;
a=x/y;
return a;
}
五、在ubuntu系统下用Makefile方式编程主程序
1.makefile介绍
makefile 能够实现大批量文件的简化编译的操作。我们只需要执行 make 命令,工程就会自动编译。每次想要编译工程的时候就执行 make ,省略掉手动编译中的参数选项和命令,很大程度上提高编译的效率。
2.语法规则
<target>: <prerequisites> //<目标>: <注释>
<commands1> //第二行必须tab键开始,命令1
<commands2> // 命令2
3.安装make
sudo apt-get install make
4.用vim编辑makefile
vim makefile
5. makefile文件编写如下:
main: main.c sub1.c
main: main1.o
gcc main1.o -o main
main.o:main.c sub.h
gcc -c main1.c
clean:
rm -rf *.o main
6.在源文件目录执行命令make,即可得到可执行文件main1
7.运行可执行文件,得到结果
总结
通过对嵌入式开发的学习,让我熟练了解了vim、gcc以及makefile的运用,在编写代码的过程中,我遇到了很多困难,我通过不断查找资料克服了这些困难。尽管之前的学习中已经接触过Ubuntu,但知识的运用还是不够熟练,这让我意识到,实践是检验真理的唯一标准,在今后的学习中我会把重心转移到动手能力的提高上,加强实践能力,提高自我能力。
参考文献
Linux——makefile编写 - tp_16b - 博客园 (cnblogs.com)
Ubuntu16.04下C语言的编译及makefile的应用 - lee_24 - 博客园 (cnblogs.com)
(46条消息) Ubuntu系统使用gcc和Makefile编译C程序_不#曾&轻听的博客-CSDN博客
目录
四、在ubuntu系统和windows系统分别编译主程序main1.c 并运行
1.ubuntu系统用gcc 命令行方式编译主程序main1.c 并运行
更多推荐
所有评论(0)