Linux应用程序之Makefile编写

本文介绍了如何使用Makefile编译Linux应用程序,重点讲解了源文件处理、目标文件命名、编译参数设置,包括源文件匹配、编译工具链、库文件路径和链接选项。只需了解这些要点,就能高效编译你的C/C++项目。

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

我们编译Linux应用程序一般使用Makefile,其规则不需要全部掌握,只需要掌握几点就够用了。重点是编译参数填好。

#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件,不需要修改
SOURCE  := $(wildcard *.c) $(wildcard *.cpp)
OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))
  
#目标文件名,可修改为任意你想要的执行文件名
TARGET  := test
  
#编译参数
CC      := gcc
LIBS 	 = -lpthread -l*
##库文件的目录
LDFLAGS := -L. lib
##头文件的目录
CFLAGS  := -I. dir
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H
  
#下面的基本上不需要做任何改动了
.PHONY : everything objs clean veryclean rebuild
  
everything : $(TARGET)
  
all : $(TARGET)
  
objs : $(OBJS)
  
rebuild: veryclean everything
                
clean :
    rm -fr *.so
    rm -fr *.o
    
veryclean : clean
    rm -fr $(TARGET)
  
$(TARGET) : $(OBJS)
    $(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)

如果是单个文件的话,直接命令行gcc就可以了。比如:

gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lword
 

-I /home/hello/include表示寻找头文件的目录,寻找的顺序是:/home/hello/include–>/usr/include–>/usr/local/include

-L /home/hello/lib表示寻找库文件的目录,寻找的顺序是:/home/hello/lib–>/lib–>/usr/lib–>/usr/local/lib

-lworld表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了"-static"表示寻找libworld.a静态库文件)

如果有些编译器环境没有设置,还需要添加

--sysroot=/opt/sysroots/aarch64-poky-linux(填上编译器安装地址就OK了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值