原来Linux makefile可以如此简单

本文介绍了如何使用LinuxMakefile进行C/C++混合编译,包括指定编译器、头文件路径、库文件和选项,对于初学者学习人工智能编程中的项目构建有指导意义。

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

作者:朱金灿
来源:clever101的专栏

  原来以为Linux makefile挺复杂的,直到从网上找到一个编译模板,发现Linux makefile是如此简单,而且你还可以根据该模板实现C程序和C++程序的混合编译。下面是Linux makefile模板的脚本代码:

# 指定c编译器
CC = gcc
# 指定C++编译器
C++ = g++
# 指定链接器
LINK = g++

# 指定包含头文件路径
INCLUDES = -I. -I"/opt/ThirdPartyLib/pugixml/include" -I"/opt/ThirdPartyLib/libcurl/include" -I"/opt/ThirdPartyLib/hdf4/include" -I"/opt/ThirdPartyLib/hdf-eos2-3.0/include"

# 指定包含的库文件路径及对应的库文件
LIBS = -L"/opt/ThirdPartyLib/pugixml/lib" -lpugixml -lsqlite3 -L"/opt/ThirdPartyLib/libcurl/lib" -lcurl 
# 设置c程序编译选项
CCFLAGS = -Wl,--rpath=./:/opt/ThirdPartyLib/libcurl/lib -DHAVE_STRUCT_TIMEVAL -DHAVE_RECV -DHAVE_SEND -DHAVE_STDBOOL_H -DHAVE_BOOL_T -DSTDC_HEADERS -DHAVE_FCNTL_H -DHAVE_FCNTL_O_NONBLOCK -DHAVE_UNISTD_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TYPES_H -c -g -fPIC
# 设置c++程序编译选项
C++FLAGS =-Wl,--rpath=./:/opt/ThirdPartyLib/libcurl/lib -DHAVE_STRUCT_TIMEVAL -DHAVE_RECV -DHAVE_SEND -DHAVE_STDBOOL_H -DHAVE_BOOL_T -DSTDC_HEADERS -DHAVE_FCNTL_H -DHAVE_FCNTL_O_NONBLOCK -DHAVE_UNISTD_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TYPES_H -std=c++11 -c -g -fPIC
# 指定编译输出文件路径
TARGET=/opt/Program/bin/demo
# 指定编译的c++源码文件
C++FILES = DatabaseOperation.cpp DownloadData.cpp
# 指定编译的c源码文件
CFILES = dynbuf.c curl_multibyte.c nonblock.c slist_wc.c strtoofft.c tool_binmode.c \
tool_writeout.c tool_writeout_json.c warnless.c 
# 指定目标文件
OBJFILE = $(CFILES:.c=.o) $(C++FILES:.cpp=.o)

all:$(TARGET)

$(TARGET):$(OBJFILE)
	$(LINK) $^ $(LIBS) -Wl,--rpath=/opt/MonitoringDroughtProgram/bin:/opt/ThirdPartyLib/pugixml/lib:/opt/ThirdPartyLib/libcurl/lib -fPIE -o $@

%.o:%.c
	$(CC) -o $@ $(CCFLAGS) $< $(INCLUDES)

%.o:%.cpp
	$(C++) -o $@ $(C++FLAGS) $< $(INCLUDES)
# 安装命令选项
install:
	tsxs -i -o $(TARGET)
# 清理中间编译文件选项
clean:
	rm -rf $(TARGET)
	rm -rf $(OBJFILE)

  从上面可以看出一个标准Linux makefile的脉络是相当清晰的,大概可以分为以下几部分:指定编译器(c编译器或者C++编译器),指定的包含的头文件路径以及库文件路径以及对应的库文件、设置c程序编译选项、设置c++程序编译选项、指定编译的c++或c源码文件、指定编译输出文件路径和指定目标文件,其它部分基本照抄就行。
参考文献:
1.Linux下的C/C++ 混合编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clever101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值