【makefile】初步学习

四阶龙格库塔方法求解一次常微分方程组 四阶龙格库塔方法求解一次常微分方程组一、写在前面二、四阶龙格库塔方法三、使用四阶龙格库塔方法求解一次常微分方程组 一、写在前面 龙格库塔方法是数值求解常微分非线性方程的有利工具,计算精度较高,通过缩短步进距离和增加阶数可以进一步控制误差范围。工程上较为常用的是四阶龙格库塔算法(R-K4),在计算收敛的情况下往往可以得到比较好的结果。 二、四阶龙格库塔方法 这里简单介绍一下算法的具体实现过程,不做详细的推导。其求解的问题是形如方程: y˙=f(y,t),其中t∈[t0,t1]初值y(t0)=c0 \dot{y 阅读详情

Makefile 学习

make - 工程管理器
nakefile就是make的执行规则
开发人员在拿到需求时,分到自己的几个功能模块,比如几个.c,然后再由一个人写一个总的makefile,把所有的功能都编译起来,也就是make工程管理区的作用
有时候会看到大写的M和小写的m
makefile–默认会找的小写的
Makefile–一般是程序员上传源码包命名的
因为用户需要拥有更高的权力,对于自己的工程项目可能需要自己写一些makefile文件,就可以新建一个小写的makefile文件,make在执行的时候就会优先调用

语法
target:files
	command

现在我们编写一个小麻雀

main.c
#include <stdio.h>
#include "tool1.h"
#include "tool2.h"
int main() {
	tool1();
	tool2();
	return 0;
}
tool1.c tool2.c
#include <stdio.h>
#include "tool1.h"

void tool1() {
	printf("in my tool1\n");
}
tool1.h tool2.h
#ifndef TOOL1_H_
#define TOOL1_H_

void tool1(void);
#endif

通过gcc *.c 编译这些文件;这些的依赖关系是:

a.out -> main.o tool1.o tool2.o
main.o -> main.c
tool1.o -> tool1.c
tool2.o -> tool2.c

接下来如何编写一个makefile文件

ool:main.o tool1.o tool2.o
        gcc main.o tool1.o tool2.o -o tool

main.o:main.c
        gcc main.c -c -Wall -g -o main.o

tool1.o:tool1.c
        gcc tool1.c -c -Wall -g -o tool1.o

tool2.o:tool2.c
        gcc tool2.c -c -Wall -g -o tool2.o

执行make:显示具体内容,有两种方式

再执行一次呢?make: ‘tool’ is up to date.
因为make会对比 (目标文件和依赖文件的时间关系)tool:main.o tool1.o tool2.o
tool 比所依赖的文件时间都是最新的,那就说明tool就是最新的,依赖文件没有被更改
而tool比其所依赖的任意一个时间晚一些,就会被重新执行

如果在执行就看不到啦,所以一般都在makefile最后加上clean

clean:
        rm -f *.o tool

执行make clean删除生成的文件
修改tool2.c内容,然后再make发现,只重新编译修改后的依赖文件

 make -n
 这将显示make 命令正在试图做的事情
 make -n实际并不运行任何命令,只是把make试图做的事情显示出来
 也可以使用make V=1
 打印执行内容并执行

当然要是这么写makefile也是挺麻烦的!可以进行简化(先把之前的makefile拷贝一份)
1、OBJS=main.o tool1.o tool2.o
2、CC=gcc 系统默认CC就是系统的gcc
3、$(RM) =rm -f
4、CFLAGS+=-c -Wall -g
+=的意思是我不知道刚刚定义了那些选项,但我之后要加上这些选项
在执行一下还是跟之前一样
但这些还是很繁琐,再拷贝一份makefile
1、$^ 表示上述的依赖
2、$@表示上述的目标文件

OBJS=main.o tool1.o tool2.o
CC=gcc
CFLAGS+=-c -Wall -g

tool:$(OBJS)
        $(CC) $^ -o $@

main.o:main.c
        $(CC) $^ $(CFLAGS) -o $@

tool1.o:tool1.c
        $(CC) $^ $(CFLAGS) -o $@

tool2.o:tool2.c
        $(CC) $^ $(CFLAGS) -o $@

clean:
        $(RM) *.o tool

3、其中由一部分是非常像的,所以我们可以提取出公式

OBJS=main.o tool1.o tool2.o
CC=gcc
CFLAGS+=-c -Wall -g

tool:$(OBJS)
        $(CC) $^ -o $@

XX.o:XX.c
        $(CC) $^ $(CFLAGS) -o $@

clean:
        $(RM) *.o tool

当然不能写XX,要写%代表通配符

OBJS=main.o tool1.o tool2.o
CC=gcc
CFLAGS+=-c -Wall -g

tool:$(OBJS)
        $(CC) $^ -o $@

%.o:%.c
        $(CC) $^ $(CFLAGS) -o $@

clean:
        $(RM) *.o tool

这个的意思就是我要生成一个tool,需要这么多.o,而这些.o我现在没有,这些.o依赖跟这些.o同名的.a,通过这样的command来生成.o

【STM32实物】基于STM32+ESP32+手机APP设计的智能宠物喂食系统 本文以STM32单片机为主控MCU,配有压力传感器、温湿度传感器、光照强度传感器、蜂鸣器等,设计了一款可以远程控制的宠物智能喂食系统。用户可以通过APP下达指令,控制宠物的喂食。每天可以根据设置的数据进行精准喂食,成本相对较低的宠物喂食装置。该装置使用步进电机控制投食仓门的开闭,通过压力传感器和时钟系统控制每日的投喂量和投喂时间。每次投食后蜂鸣器会提醒宠物进食,树立每日定点进食的习惯。经测试得出,该设备确实能实现每日定时定量投喂。系统整体运行顺畅,所有预期功能得以实现。它非常适合解决宠物主人不在家时影响宠物 阅读详情

相关推荐

KUKA机器人自动回原点程序

创建两个全局变量分别用于储存机器人的笛卡尔姿态与关节角姿态。打开System文件夹中的config文件创建全局变量的点位。在USER GROBALS用户自定义变量Userdefined variables下创建一个E6POS类型的点位,一个E6AXIS类型的点位。

A567852的博客 5213

makefile实现创建目录和复制.ko文件

如果已经创建了对应项目的目录就不需要·make file了。

weixin_52849254的博客 2250

聚类分析(超全超详细版)

聚类分析是一种典型的无监督学习, 用于对未知类别的样本进行划分,将它们按照一定的规则划分成若干个类族,把相似(距高相近)的样本聚在同一个类簇中, 把不相似的样本分为不同类簇,从而揭示样本之间内在的性质以及相互之间的联系规律 聚类算法在银行、零售、保险、医学、军事等诸多领域有着广泛的应用 聚类分析基础 聚类分析的概念 聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。目的是...

Gfqwy2021 22万+

makefile 学习

建立一个新的目录,然后把这三个文件拷贝到目录中,也把 Makefile 文件拷贝到目录中。之后,对 Makefile 的相关项目进行如下设置:  PROGRAM   := hello      # 设置运行程序名 SRCDIRS   := .          # 源程序位于当前目录下   SRCEXTS   := .c .cxx    # 源程序文件有 .c 和 .cxx 两种类型 C...

boshuzhang的专栏 1466

告别以太网瓶颈:手把手教你为AI训练集群搭建InfiniBand网络(以NVIDIA DGX A100/H100为例)

本文详细指导如何为AI训练集群搭建InfiniBand网络,解决以太网瓶颈问题,特别针对NVIDIA DGX A100/H100系统。通过硬件选型、网络架构设计和性能调优,显著提升多机多卡训练效率,适用于大规模模型训练场景。

weixin_30336061的博客 311

Brim与ZUI协同安装指南:从下载到流量分析实战

本文提供Brim与ZUI协同安装与实战指南,详细讲解从下载、环境变量配置到流量分析的全流程。通过将PCAP文件转换为ZNG格式,结合直观的Zed查询语言,这套组合能极大提升大型网络数据包的分析效率,是网络安全与运维人员进行高效流量分析的利器。

metal的博客 460

make file拷贝后缀相同的文件到指定目录下

需要将当前目录下的所有so文件拷贝到/system/lib目录下,应该怎么写命令呢。命令如下:PRODUCT_COPY_FILES += \$(call find-copy-subdir-files,*.so,$(LOCAL_PATH)/lib_VScreen,system/lib)

hedalei的博客 557

Figma入门-自动布局

Figma原型图制作内置组件友好,自动布局类似CSS flex,通过布局网格控制对齐、分布、换行等,前端熟悉的同学易上手,参数设置基本一致。

我码玄黄的博客 2175

Makefile实际操作详解

一、makefile 单个C文件        0.前言    从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力。所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法。    例说makefile分为以下几个部分,更多内容请参考【例说makefi...

TJH_I_CAN的博客 669

100天精通Python(数据分析篇)——第53天:初识pandas模块_基础介绍

一、初始pandas 1. 什么是pandas? 2. 为什么要学习pandas? 3. pandas的优势 4. 下载安装pandas 二、Pandas的数据类型 1. Series 2. DataFrame

努力让自己发光,对的人才能迎着光而来 17万+

【WRF-GHG 教程第一期】概述(Overview)

概述(Overview)

WW、forever的博客 511

makefile 初步学习与使用

make 工具用于自动完成编译。自动编译的规则由makefile文件来规定。 使用make命令时,该工具默认在当前目录下依次搜索名为 GNUmakefile、makefile、Makefile 的文件来作为makefile。UNIX/Linux中常使用后两种。 也可以指定上述三种文件以外的其它文件作为makefile,须添加 -f 选项:make  -f  Makefile.debug

量子波儿的专栏 1164

19、CATIA V5:参数化建模与零件目录创建全解析

本文详细解析了在CATIA V5中通过设计表实现参数化建模及零件目录创建的完整流程。以支撑块和钩形夹为例,介绍了参数识别、设计表创建与关联、配置管理以及零件目录的构建方法。同时,提供了实际操作建议和注意事项,帮助设计师高效创建和管理零件族,提升设计效率和质量。

raspberrypi5的博客 449

对 Makefile 的初步学习与运用

对 Makefile 的初步学习与运用欢迎使用Markdown编辑器新的改变附录 我的 Makefile 欢迎使用Markdown编辑器 新的改变 附录 我的 Makefile DIR_INC = ./include DIR_SRC = ./source DIR_OBJ = ./obj VPATH = $(DIR_INC):$(DIR_SRC) XX = clang++ --target=x86...

Daning_NFH的博客 354

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

8.makefile初步编程学习

8.1.makefile概述8.2.目标、依赖、命令 8.3.通配符%和自动推导 8.4.makefile中定义和使用变量 8.5.伪目标.PHONY 8.6.文件名 8.7.makefile中引用其他makefile 8.8.注释用# 8.9.命令前面的@用来静默执行 8.10.变量赋值运算符 8.11.环境变量 8.12.通配符 8.13.自动变量

Rston's Notes 690

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

1148_Makefile学习_Makefile中的目标、变量以及通配符初步

全部学习汇总:https://github.com/GreyZhang/g_makefile 前面已经简单梳理了关于Makefile中目标的基础信息,接下来增补并且测试几个关于目标的小知识点。顺便,增加部分其他的基础信息。 如果目标文件有多个,可以设置一个all目标作为多个目标的目标。 all: one two three one: touch one two: touch two three: touch three cle...

小灰笔记 875

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

初步学习编写Makefile

目的:基本掌握了make的用法,能在Linux系统上编程。环境:Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。准备:准备三个文件:file1.c, file2.c, file2.hfile1.c:#include <stdio.h>...

weixin_30918415的博客 78

Linux学习笔记-对Makefile的初步优化

原文件如下:   这里的Makefile源码如下: helloworld: main.o first.o second.o g++ main.o first.o second.o -o helloworld main.o: first.h second.h main.cpp g++ -c main.cpp -o main.o first.o: first.h first.c...

IT1995的博客 4220

Makefile学习(一)----初步理解

一.我对makefile的理解: 经过一段时间对makefile的学习,我理解的makefile就是将程序员手动编译源文件的过程用一个脚本执行,这对于小型项目来说,程序员手动执行和用makefile来执行感官上可能没有大的差异,但是对于中大型项目来说,makefile的存在大大提供了程序员编译代码效率,一个好的makefile文件是一个项目健康存在的基础。 二.初涉makefile: ...

weixin_30781107的博客 93

【Ubuntu系统的初步学习及使用gcc和makefile编译程序】

Ubuntu系统学习,gcc,makefile

chenyu128的博客 137

学习构建WDF驱动程序 - 初步了解SOURCE和makefile文件

接此:https://blog.youkuaiyun.com/bcbobo21cn/article/details/112074021 在WDK的示例目录下构建出一个.sys驱动程序; 下面来构建自己的驱动程序; 新建wdkprj目录,源码文件为mytest.c,代码见前文; 新建SOURCES文件,无后缀;内容为: TARGETNAME=MYTEST TARGETPATH=OBJ TARGETTYPE=DRIVER SOURCES=mytest.c 新建文件MAKE...

bcbobo21cn的专栏 1332

初步学习嵌入式开发系统,Ubuntu系统使用gcc和Makefile编译C程序

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

qq_52772319的博客 214

05-S3C2440学习之内核(初步)makefile分析及内核启动分析

一、makefile分析 1 linux内核中的几类makefile 对makefile讲解: 1.1子目录下的makefile

风雨无阻 825

学习makefile

<br />今天刚回学校,makefile还没有学得很好,要继续加强,老师那边的事情也还需要处理,望上天佑我。<br /> <br />很喜欢一句话,高尚是高尚者的墓志铭,卑鄙是卑鄙者的通行证。<br /> <br />这是我写的第一篇blog,感觉没有可写的东西,算是开个头!

sterling_zhou的专栏 138

201029阶段二Linux动态库、makefile

目录一、学习的知识点二、上课没有听懂或者没有理解的地方三、当天学习的收获 一、学习的知识点 二、上课没有听懂或者没有理解的地方 对动态库的链接还有些不懂 三、当天学习的收获 初步了解了动态库的创建和makefile ...

pear_11的博客 137

live555学习(一)通读Makefile编译live555

live555学习(一)通读Makefile编译live555live555编译live555学习开源live555学习(一)通读Makefile编译live555前言live555简介下载live555live的编译生成MakefileMake的生成目标前言拿到一份开源代码,我们应该怎么学习呢,第一次接触的时候面对海量的源码,会有种找不着北的感觉吧。这里我会写下自己的学习过程,以及学习中遇...

weixin_30394633的博客 1439
就白嫖
博客等级 码龄6年 0粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值