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

本文介绍了如何使用Makefile编译包含共享内存和信号量的C程序。通过sender和receiver两个程序实例,演示了如何利用共享内存进行进程间通信,并采用信号量确保数据的一致性和完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前的问题描述

在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值