Linux嵌入式操作系统-实验一 Gcc和Make工程管理器

一、实验目的

1、熟悉Linux常用命令。

2、掌握gcc编译器、gdb调试器的使用方法。

3、会编写多文件的C程序,并使用gcc编译。

4、熟悉makefile的结构和编制,利用make命令编译程序。

二、实验内容

    1、编写包含多个文件的.c源码,通过调用自定义函数,实现功能:用户输入一个正整数N(3≤N≤7),计算所有N位水仙花数并按递增顺序输出。注:水仙花数是指对于一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。

2、直接使用gcc命令行编译程序源文件,并查看运行结果。

3、编写Makefile文件,在Makefile中需要编写语句将自定义函数编译生成为动态链接库lib***.so,并进行链接。完成后在终端窗口通过make命令编译、运行程序,查看结果。

注意:Makefile文件编写过程应符合惯例,即,让编译器知道编译一个目标需要依赖哪些文件,即体现出文件间的依赖层次关系。

选做部分:通过~/.vimrc文件对Vim进行个性化配置,包括但不限于:设置行号、语法高亮、符号匹配等。也可考虑安装如vim-plug或vundle等插件管理器后,在~/.vimrc中声明相应插件并进行安装,以实现自动补全等其他功能。

三、实验具体分工

  

独立完成实验。

 

四、实验步骤、源程序及结果截图

1.编写代码:

>>>function.h:

  1  #include <math.h>

  2 #include <stdio.h>

  3 #include<math.h>

  4 void printDaffodils(int N);

>>>function.c:

  1 #include "function.h"

  2 #include <math.h>

  3 int power(int base, int exponent);

  4 void printDaffodils(int N) {

  5 int start = power(10, N - 1);

  6 int end = power(10, N) - 1;

  7 for (int i = start; i <= end; i++) {

  8 int num = i;

  9 int sum = 0;

 10 while (num > 0) {

 11 int digit = num % 10;

 12 sum += power(digit, N);

 13 num /= 10;

 14  }

 15 if (sum == i) {

 16    printf("%d\n", i);

 17   }

 18 }

 19 }

>>>lin_1.c:

1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include "function.h"

  4 int power(int base, int exponent);

  5 int power(int base, int exponent) {

  6     int result = 1;

  7     for (int i = 0; i < exponent; i++) {

  8             result *= base;

  9         }

 10     return result;

 11 }

 12

 13 void rintDaffodils(int N) {

 14     int start = power(10, N - 1);

 15     int end = power(10, N) - 1;

 16

 17     for (int i = start; i <= end; i++) {

 18             int num = i;

 19             int sum = 0;

 20

 21

 22             while (num > 0) {

 23                         int digit = num % 10;

 24                         sum += power(digit, N);

 25                         num /= 10;

 26                     }

 27

 28

 29             if (sum == i) {

 30                         printf("%d\n", i);

 31                     }

 32         }

 33     }

 34

 35 int main() {

 36     int N;

37

 38     printf("请输入一个正整数N(3≤N≤7):");

 39     scanf("%d", &N);

 40

 41     if (N < 3 || N > 7) {

 42             printf("输入的N不符合要求\n");

 43             return 0;

 44         }

 45

 46     printf("%d位水仙花数有:\n", N);

 47     printDaffodils(N);

 48

 49     return 0;

 50 }

2.编译;

3.运行结果如下:

4.动态链接库:

5.运行及结果:

6.编写makefile:

7.扩展实验:

设置结束重启Ubuntu:

五、实验问题总结

    整体还是比较简单的,但是要注意的是,在编写makefile时一定要注意编写的格式,不然会报错!

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值