【嵌入式基础入门】Ubuntu系统下编译C程序基本流程

本文主要叙述Ubuntu18.04系统下编译C程序的基本流程,包括环境的配置,最基础的网络参数设置、apt源的更换、经典hello world在Ubuntu下的编译方式,vim文本编辑器的利用,makefile的使用等。

         一、环境配置

二、网络参数设置

通过NetworkManager配置网络

1.设置虚拟机的网络适配器为桥接模式或NAT模式

2.虚拟网络编辑器设置

3.检查网络配置

 三、更换apt源为阿里源

四、编写一个简单的输出hello world的C程序

1.安装vim,gcc

2.vim的简单介绍及使用

3.新建 hello.c

4.编译hello.c

 五、对两个输入整型参数做某个运算

1.要求

2.在虚拟机下编写c语言代码

3.在windows上编写c语言代码 

六、采用makefile对上述程序进行编译 

1.makefile简介

2.make如何工作

3.makefile文件

4.目标Target

5.安装make

6.用vim编写makefile


一、环境配置

虚拟机软件 VMware Workstation Pro

Ubuntu 18.04

这里需要注意一下,虚拟机软件 VMware Workstation Pro装好之后,我们的网络连接处会出现两张虚拟网卡

 如果没有,可能是因为你以前卸载过此软件,有些文件没有卸载干净,或者注册表里面有一些部分出现了问题,详细的解决方法可参考此链接VMware安装完后,没有虚拟网卡 - psy_code - 博客园

二、网络参数设置

Ubuntu的网络配置有两种方式,一种是通过interfaces来设置(较复杂),一种是通过NetworkManager来配置,这里主要讲解NetworkManager配置方式。

通过NetworkManager配置网络

NetworkManager是Ubuntu中图形化的网络管理工具。
网络命令管理行工具NetworkManager command line tool,也叫nmcl

1.设置虚拟机的网络适配器为桥接模式或NAT模式

 选择 虚拟机 --> 设置 --> 网络适配器 -->桥接模式(或-->NAT模式)

 注意选择桥接模式时同时勾选上复制物理网络连接状态

2.虚拟网络编辑器设置

选择 编辑-->虚拟网络编辑器

 点击更改设置

 这里选择添加网络,添加VMnet0,设置为桥接模式,并设置为自动即可(也可直接选择NAT模式

3.检查网络配置

在命令窗口输入ifconfig -a查看自己的网卡编号

 在命令行输入 ping 自己的IP地址 ,ping www.baidu.com可以看是否可以ping通,在网络畅通的情况下,会一直返回数据条,停止输出则用crtl+c;

 三、更换apt源为阿里源

输入命令 sudo vim /etc/apt/sources.list 编辑源文件列表

将原有的内容改为如下内容。

 运行如下命令 sudo apt-get update 更新软件列表

四、编写一个简单的输出hello world的C程序

1.安装vim,gcc

输入命令
sudo apt-get install vim
安装vim编辑器
sudo apt-get install gcc
安装gcc编译器

2.vim的简单介绍及使用

Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富, 在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

vim有三种模式:命令模式、插入模式以及末行模式。

常用指令:

       切换到输入模式,以输入字符

:        切换到底线命令模式,在最后一行输入命令

x        删除当前光标所在字符

esc    退出输入模式,切换到命令模式

      保存当前以写入的内容

      退出vim的编辑

wq      保存后退出vim的编辑

wq!   强制保存后退出vim的编辑

3.新建 hello.c

输入命令 vim hello.c

进入编辑器后,按下i,进入编辑模式,编写如下代码

#include<stdio.h>
main()
{
    printf("hello world!");
    return 0;
}

编辑完成后,esc键,wq!退出vim编辑

4.编译hello.c

输入命令
gcc hello.c -o hello
此时会生成一个hello文件
输入./hello
即完成hello world的经典编译

 五、对两个输入整型参数做某个运算

1.要求

子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。

2.在虚拟机下编写c语言代码

输入命令 vim main1.c 编辑如下代码

#include<stdio.h>
extern float x2x(int x,int y);
int main()
{
    int x,y;
    x=3;
    y=6;
    float ans;
    ans=x2x(x,y);
    printf("%f",ans);
    return 0;
}

编译完成,wq! 强制保存后退出编辑

输入命令 vim sub1.c 编辑如下代码

float x2x(int x,int y)
{
    float ans;
    ans=x+y;
    return ans;
}

编译完成,wq! 强制保存后退出编辑

之后输入命令运行
gcc -o main main1.c sub1.c
./main1

3.在windows上编写c语言代码 

这里我才用的DEV C++进行编译

编写 main.c 文件

#include"sub1.h"
int main()
{
	int x,y;
	x=3;
	y=6;
	float ans;
	ans=x2x(x,y);
	printf("%f",ans);
	return 0;
}

编写 sub1.h 文件

#ifndef __SUB1_H
#define __SUB1_H

#include<stdio.h>

float x2x(int x,int y);

#endif

编写 sub1.c 文件

#include"sub1.h"
float x2x(int x,int y)
{
	float ans;
	ans=x+y;
	return ans;
}

之后对 main.c 文件进行编译

六、采用makefile对上述程序进行编译 

1.makefile简介

在Shell脚本中使用make命令来进行编译,尤其在C/C++开发中,make命令通过makefile文件中描述源程序之间的依赖关系进行自动编译;makefile文件是按照规定格式编写,需说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系;很多大型项目的编译都是通过 Makefile 来组织的。

2.make如何工作

1.make在当前目录下寻找“Makefile”或“makefile”文件
2.若找到,查找文件中的第一个目标文件.o
3.若目标文件不存在,根据依赖关系查找.s文件
4.若.s文件不存在,根据依赖关系查找.i文件
5.若.i文件不存在,根据依赖关系查找.c文件,此时.c文件一定存在,于是生成一个.o文件,再去执行

3.makefile文件

Makefile文件由一系列规则rules构成,每条规则形式如下:

<target>: <prerequisites>
[Tab]<commands>

第一行冒号前为目标,冒号后为前置条件;第二行必须由一个Tab键起首,后接命令;目标是必须的,不可省略;前置条件和命令是可选的,但两者必须至少存在一个。

4.目标Target

目标可以是文件名,指明make命令所要构建的对象;也可以是某个操作名称,称“伪目标”;

clean:
		rm *.o

以上代码目标是clean,命令是rm *.o;

执行make clean命令,实现对象文件的删除;

5.安装make

输入命令 sudo apt-get install make

6.用vim编写makefile

输入命令 vim makefile 编写如下代码

prog: main1.o sub1.o
        cc main1.o sub1.o -o prog
main1.o: main1.c
            cc -c main1.c
sub1.o: sub1.c
            cc -c sub1.c
clean:
        rm prog *.o

wq! 保存退出后,在命令行先输入 make ,再输入 ./prog 即可

猜你喜欢

转载自blog.csdn.net/qq_55894922/article/details/126722203