Makefile文件四:Makefile案例

本文探讨了两个C++项目的编译流程,涉及交叉编译、链接选项和目标文件管理。第一部分展示了如何在特定硬件上使用预编译指令,而第二部分则关注如何组织对象文件和生成静态库。通过实例,讲解了`.o`文件生成位置和链接过程的不同方法。
摘要由CSDN通过智能技术生成

案例一:

# CROSS_COMPILE = arm-hisiv300-linux-
CC = gcc
AR = ar
# LD=$(CROSS_COMPILE)ld

IFLAG 	= -Ibuild\
	-Iinclude\
	-Isrc\

CFLAGS 	= $(IFLAG) -O2 -Wall -D__linux__

SRCS = $(wildcard build/*.cpp) $(wildcard src/*.cpp)
	   	
OBJS = $(patsubst %.cpp,%.o,$(SRCS))
TARGET = HK_ADecode.a

all: $(OBJS) $(TARGET)

$(TARGET): $(OBJS)
	$(AR) rcs $(TARGET) $(OBJS)
	
.cpp.o:
	$(CC) $(CFLAGS) -c $<

clean:
	rm -f *.o *.a $(OBJS)
	rm -rf $(DIR)

案例二:

CC     = gcc
AR     = /usr/bin/ar rc
RANLIB = /usr/bin/ranlib


INCLUDE_DIR = -Ibuild\
	-Iinclude\
	-Isrc\ 

CFLAGS = -Wall -s -fPIC -D_FILE_OFFSET_BITS=64  -D_LARGE_FILE -D__INTEL_COMPILER $(INCLUDE_DIR)


SOURCES = $(wildcard build/*.cpp) $(wildcard src/*.cpp)

OBJS    = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES)))

EXECUTABLE = adecode.a
OBJPATH    = ./


all: $(OBJS) $(EXECUTABLE)

$(EXECUTABLE): $(OBJS)
	$(AR) $(EXECUTABLE) $(OBJS)
	$(RANLIB) $(EXECUTABLE) 

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

.PHONY: clean
clean:
	rm -f  $(notdir $(OBJS)) *.a

生成.o说明:

方法一 、

1、将.o生成在和.cpp相同目录下(加上 -o $@)

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

2、链接所有.o时,需要目录

$(TARGET): $(OBJS)
    $(AR) rcs $(TARGET) $(OBJS) 

方法二、

1、将.o生成在和Makefile相同目录下(不加 -o $@)

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

2、链接所有.o时,不需要目录

$(TARGET): $(OBJS)
    $(AR) rcs $(TARGET) $(notdir $(OBJS) )

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值