嵌入式Linux系统开发基础

一:编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。1) 请在ubuntu系统用gcc 命令行方式编译主程序main1.c 并运行; 2) 请在windows系统下用你熟悉的编译工具编译主程序main1.c 并运行。

下面是主程序文件 main1.c 和子程序文件 sub1.c 的代码示例:

main1.c:

#include <stdio.h>

float x2x(int a, int b);

int main() {
    int num1 = 10;
    int num2 = 5;
    float result = x2x(num1, num2);
    
    printf("Result: %.2f\n", result);
    
    return 0;
}

sub1.c:

float x2x(int a, int b) {
    float result = (float)(a * a) / (float)(b * b);
    return result;
}

在 Ubuntu 系统中使用 gcc 命令行方式编译和运行程序:

  1. 打开终端 (Terminal)。

  2. 进入保存有 main1.c 和 sub1.c 文件的目录。

  3. 执行以下命令来编译 main1.c 文件和 sub1.c 文件:

    gcc -o main1 main1.c sub1.c

  4. 这将生成一个名为 main1 的可执行文件。

  5. 执行以下命令来运行编译生成的可执行文件:

    ./main1

    结果将会在终端中显示。

经过编译并运行后的结果是:结果为: 15.000

 二:在任务4基础上,在ubuntu系统下用Makefile方式编程主程序。

下面是在 Ubuntu 系统下使用 Makefile 编译主程序的示例:

Makefile 文件:

CC=gcc
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main1.c sub1.c
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=main1

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
	$(CC) $(LDFLAGS) $(OBJECTS) -o $@

.c.o:
	$(CC) $(CFLAGS) $< -o $@

clean:
	rm -f $(EXECUTABLE) $(OBJECTS)

在终端中进入保存有 main1.c 和 sub1.c 和 Makefile 的目录,执行以下命令:

make

如果编译成功,将会生成一个名为 main1 的可执行文件。

如果需要清除已生成的文件,可以执行以下命令:

make clean

备注:

  • 在 Makefile 中,使用 $< 表示当前目标依赖的源文件;使用 $@ 表示当前目标文件的名称。
  • $(SOURCES:.c=.o) 表示将 $(SOURCES) 变量中所有以 .c 结尾的文件名后缀都替换成 .o,然后作为目标文件的名称。这里将 main1.c 和 sub1.c 都编译成了对应的 .o 目标文件,用于最后的链接操作。
  • CFLAGS 存储了编译选项,这里使用了 -c 选项将源文件编译成目标文件;使用了 -Wall 选项开启所有警告信息。
  • LDFLAGS 存储了链接选项,这里没有使用任何选项。
  • all 是默认目标,其依赖于 $(EXECUTABLE) 和 $(SOURCES)
  • clean 目标用于删除所有的目标文件和可执行文件,方便重新编译。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值