调用一个makefile并同时生成动静态库

这篇博客介绍了如何在Linux环境下,利用makefile对多个源文件进行编译,同时生成动态库和静态库。实验要求在特定目录结构下编写makefile,并创建相关.c和.h文件。在遇到.c文件互相调用API导致无法生成库的问题时,提出了修改makefile解决路径问题的方法。

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

实验题目:使用一个makefile对多个文件进行编译,生成动态库和静态库

实验要求:需要文件具有以下目录结构
在这里插入图片描述

​​实验环境与工具:Linux、ubuntu20、gcc7.4.0、secureCRT4.0、notepad++

相关基础请先参考使用makefile生成动态库和静态库

一、相关文件位置和名字

请添加图片描述
图1:主目录

在这里插入图片描述
图2:liba目录

在这里插入图片描述
图3:libso目录

二、makefile程序

TARGET := main
SOURCE := main.c
 
PWD_A     := ./liba
SOURCE_A  := $(wildcard $(PWD_A)/*.c)
OBJSA_A   := $(PWD_A)/*.o
OBJSB_A   := $(patsubst %.c,%.o,$(SOURCE_A))
TARGET_A  := $(PWD_A)/libfunc_a.a
 
$(indo $(SOURCE_A))
 
PWD_SO     := ./libso
SOURCE_SO  := $(wildcard $(PWD_SO)/*.c)
OBJSA_SO   := $(PWD_SO)/*.o
OBJSB_SO   := $(patsubst %.c,%.o,$(SOURCE_SO))
TARGET_SO := $(PWD_SO)/libfunc_s.SO
 
#compile and lib and link parameter
CC		 := gcc
LDFLAGS  := -L./liba/ -L./libso/
LIBS     := -lfunc_a -lfunc_s
INCLUDE  := -I./liba/ -I./libso
AR       := ar
 
all: $(TARGET_A) $(TARGET_SO) $(TARGET)
 
#.a_link
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值