makefile 同时生成多个可执行文件

之前的问题描述

在makefile中加编译参数-pthread
也就是由这个问题,让我一步步去学习了makefile的使用

makefile 默认只生成第一个可执行文件,所以为了同时编译多个可执行文件,我们用到了伪可执行文件,make 过程中并不生成 这个伪可执行文件,利用依赖的属性,同时生成三个可执行文件

源代码功能介绍

编写程序sender,它创建一个共享内存,然后等待用户通过终端输入一串字符,并将这串字符通过共享内存发送给receiver;最后,它等待receiver的应答,等到应答消息后,将接收到的应答信息显示在终端屏幕上,删除共享内存,结束程序的运行。编写receiver程序,它通过共享内存接收来自sender的消息,将消息显示在终端屏幕上,然后再通过该共享内存向sender发送一个应答消息“over”,结束程序的运行。使用无名信号量或System V信号量实现两个进程对共享内存的互斥使用。

源文件

Code in Github

工程文件说明说明

  1. all 在这里是一个伪执行文件 依赖 init ,sender,recevier三个可执行文件

  2. common 里面不包含main函数,里面是一些封装的函数
    common.c 没有外部依赖 common.o 自动生成

3.makefile会自动添加部分信息

init.o : init.c common.h 

等效于

init.o : common.h

makefile终极版本

all : init sender receiver
.PHONY : clean


init : init.o common.o
    cc -pthread -o init init.o common.o

sender : sender.o common.o
    cc -pthread -o sender sender.o common.o

receiver : receiver.o common.o
    cc -pthread -o receiver receiver.o common.o

init.o : common.h           

sender.o : common.h

receiver.o : common.h

clean : 
    rm    init 
    rm    receiver
    rm    sender 
    rm    *.o

效果演示、

makefile_show_02.gif

别再手动敲代码了!用STM32CubeMX+FreeRTOS图形化配置,5分钟搞定多任务通信框架 本文详细介绍了如何利用STM32CubeMX和FreeRTOS快速搭建多任务通信框架,大幅提升嵌入式开发效率。通过图形化配置工具,开发者可在5分钟内完成任务调度、时钟配置和内核对象生成,特别适合物联网设备开发。文章还提供了代码优化和调试技巧,帮助开发者轻松应对复杂应用场景。 阅读详情

相关推荐

瑞萨RH850/U2A8以太网模块mcal说明

如下所有功能的支持需要在达芬奇中开启EthGlobalTimeSupport。秒[32bit], 纳秒[32bit], 纳秒小数[20bit]每一帧发送数据的相关结构缓冲区都放在变量。每一帧接收数据的相关结构缓冲区都放在变量。

至道无难,唯嫌拣择。 1796

makefile编译出多个可执行文件

共有四个.cpp文件,需要编译出四个可执行文件

吴立赛的博客 3588

毕业设计,基于SpringBoot+Vue+MySQL开发的智能无人仓库管理,源码+数据库+毕业论文+视频演示

毕业设计,基于SpringBoot+Vue+MySQL开发的智能无人仓库管理,源码+数据库+毕业论文+视频演示互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用智能无人仓库管理可以有效管理,使信息管理能够更加科学和规范。智能无人仓库管理在Idea/Eclipse环境中,使用Java语言进行编码,使用MySQL创建数据表保存本系统产生的数据,具体功能请看文件夹里面的演示视频。总之,智能无人仓库管理集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化。关键词:智能无人仓库管理;Java语言;MySQL

makefile工具的使用,编写一个或多个文件!(简单易上手)

makefile工具的使用,编写一个或多个文件!(简单易上手)

wihkum 1933

Makefile生成多个可执行程序

【代码】Makefile生成可执行程序。

xt18971492243的博客 997

【Linux篇】makefile一次形成两个可执行

makefile从上到下被扫描时,要生成的目标文件第一个遇到的就是all,然后他就知道了这个all依赖的是exec和mycmd,然后就分别推导式地执行下面的两个执行生成mycmd和exec。然后all的依赖条件具备了,想执行all的依赖方法,但是由于是伪目标不需要依赖方法,所以makefile至此就结束。首先要知道,正常的makefile文件,在执行的时候,遇到第一个目标文件,就只生成这一个。上面的makefile只会生成exec,因为第一次遇到的目标文件是exec。的时候,直接删除那两个可执行即可。

iiiiiankor的博客 1038

一个makefile编译多个可执行文件

makefile中默认不能定义同名函数,所以一个Makefile想产出两个可执行bin默认是不可以的

purple尘的专栏 1512

使一个Makefile同时生成多个可执行文件

看unp(UNIX网络编程)的时候一些小例子需要编译多个文件,顺便学了一下Makefile文件的编写。 当需要在一个Makefile文件里面生成多个可执行文件的时候遇到了困难,经过查询得到解决方案如下: 这个例子中我需要生成的是tcpserv01和tcpcli01两个可执行文件。 其中.PHONY说明all是个“伪目标”,make不会生成“all”这个可执行文件,而是执行后面的多个目标。 ...

weixin_30302609的博客 1117

三、Makefile--生成多个目标文件

我们工作的时候经常会遇到 要多写几个不同的测试案例,去测试不同的功能,这个时候 需要编译多个 可执行文件。 假如我们的目录下有三个原文件需要编译成可执行文件 test1.c test2.c test2.c test1.c #include <stdio.h> void doFunc1(void) { } int main(int argc, char **argv) { doFunc1(); return 0; } test2.c #include <stdio.h

zzsxyl的博客 3146

Makefile 生成多个目标

每一个文件中都有main函数,我该如何写一个makefile, 能同时编译这些文件呢?

非学无以广才 非志无以成学 521

一个Makefile同时编译多个.c文件

在写作业时想用一个Makefile同时编译多个.c文件生成可执行文件,在查找了相关资料后,发现可以添加一个伪可执行文件makefile 默认只生成第一个可执行文件,所以可以用伪可执行文件,make 过程中并不生成 这个伪可执行文件,在如下代码中,all就是一个伪执行文件。 #makefile CC=gcc all:homework3_2 homework3_1 .PHONY:all homework3_2 :homework3_2.o $(CC) -o $@ $< homework3_1

wjsn520的博客 4977

Makefile多目标

Makefile 规则中目标可以有多个。如需要生成多个可执行文件的做法。使用伪目标的方法,给伪目标指定所依赖的文件: all:main hello test .PHONY:all main: gcc -o main main.c hello: gcc -o hello hello.c test: gcc -o test test.c .PHONY:...

weixin_40763897的博客 3328

Makefile学习二

今天继续对Makefile进行研究,话不多说,进入正题: make常用内嵌函数: 下面利用上面的知识点来实现一个多级目录的Makefile,如下: 多级目录Makefile: 这个例子的目录结构如下: 通过一个Makefile来最终生成一个可执行文件main,那该怎么编写呢?会利用make的内联函数,具体写法如下: 运行如下: 那这个Makefile到底是怎么实现的呢?下面一一对其进...

webor2006的博客 101

makefile初涉

makefile makefile主要用于处理大型项目中,不同文件之间的依赖谷阿莫西,当依赖文件创建时间晚于目标(文件被更新),会重新执行对应的命令 文章目录makefile1 基本结构2 变量 1 基本结构 # 常用结构 target : prerequisites # 依赖文件列表以空格分隔 command 1 -command 2 # 命令前加“-”将...

Flora_xuan1993 184

makefile的基本使用方法

gcc -c file1.c -o file1.o 编译file1.o文件,-c表示用源文件名命名目标文件,默认生成file.o,可以省去-o。gcc -c file2.c -o file2.o 编译file2.o文件,-c表示用源文件名命名目标文件,默认生成file.o,可以省去-o。gobbin:file1.o file2.o gobbin为程序名称,依赖于file1.o file2.o两个目标文件

code 610

Makefile单个及多个文件编译,路径引用,只讲干货不拖拉_00

显然,Makefile就无法搜索到了,这个需求是非常合理的,因为在我们开发中,通常会把头文件和.c文件分开归类,那么我们如何告知Makefile我们的log.h文件放在head目录下了呢?如图,我们要编译008_memset_s.c和memset_s.c两个文件生成我们的edit,当然还包括了log.h和securecutil.h文件,log.h文件在head目录下,securecutil.h文件在safe_c_library目录下。如下图,我运行make指令,生成了对应的.o文件和edit终极目标。

qq_47325567的博客 2798

makefile学习0:Makefile 编译生成多个可执行文件

all:server client server:server.c gcc $< -o $@ client:client.c gcc $< -o $@ clean: rm -f server rm -f client 解释: $@ ——目标文件的名称; (2) $^ ——所有的依赖文件,以空格分开,不包含重复的依赖文件; (3) $< ——第一...

天泉证道 3689

makefile在同一目录下编译出多个可执行文件

https://blog.csdn.net/lidonghat/article/details/62891452 LIBRARY += -ltpn_agent -ltpn_effect -ltpn_proc -lhiredis -ljson LDFLAGS += --as-needed SRCS = $(wildcard *.c) OBJS = $(patsubst %...

happylzs2008的专栏 1165

makefile---多个文件多个可执行文件(C/C++

makefile 作用:将多个文件通过一个makefile文件进行编译生成多个可执行文件。 环境:Vmware Workstation;CentOS-6.4-x86_64 图解说明: 1、创建并编辑文件main1.c: #include int main() { printf("main1\n"); return 0; } 2、创建并编辑文件m

沫俱宏 5567

最基本的makefile二(多个文件综合在一起的用法)

1、新建tool.c 注意这里是自己写的头文件引用的时候要用双引号#include"tool.h" #include"tool.h" int find_max(int arr[], int n){ int i; int m = arr[0]; for(i=0; i<n; i++) { if(arr[i] > m) { m = arr[i]; } } return m; } 2、新建tool.h #ifndef _TOOL_H #define.

小吕的博客 608
上一篇: Java 7 Concurrency Cookbook – Javier Fernández González -前言
下一篇: 邁向IT專家成功之路的三十則鐵律 鐵律十四:IT人言談之道-守中
weixin_34413103
博客等级 码龄10年 4882粉丝 700原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值