linux系统中如何通过makefile对c++项目进行构建

linux系统中如何通过makefile对c++项目进行构建

在这里插入图片描述

本次分享的内容有:

  • 静态库和动态库的区别
  • make语句的介绍
  • makefile文件内容的构成

静态库和动态库的区别

静态库文件是在程序编译阶段,复制粘贴到主程序中,如果该静态库文件被多次调用,则被多次复制。它以.a后缀结尾。
动态库文件是则是在程序运行阶段时,动态链接到主程序中,即要用到该库文件时,才被链接和调用。它以.so后缀结尾。

make语句的介绍

make命令是Linux系统中内置的命令。它是GNU Make工具的一部分,通常默认安装在大多数Linux发行版中。
当使用make命令时,会根据makefile文件内容对项目进行编译

GNU Make是一个广泛使用的构建自动化工具,它通过读取名为Makefile的特殊文件来确定如何编译和链接程序,从而自动完成构建过程。

makefile文件内容的构成

下述内容以对cat.cpp文件编译成静态库和动态库为例。

# 指定编译的目标文件是libcat.a和libcat.so
all:libcat.a \
    libcat.so

# 编译libcat需要依赖cat.cpp和cat.h
# 如果被依赖文件发生了变化,将重新编译libcat
libcat.a:cat.h cat.cpp
        g++ -c -o libcat.a cat.cpp

libcat.so:cat.h cat.cpp
        g++ -fPIC -shared -o libcat.so cat.cpp

# clean用来清理编译得到的目标文件,仅在make clean才会执行
clean:
        rm -f libcat.a libcat.so

上述内容是makefile文件中的内容,这些内容是为了告诉GNU Make工具:

  • 当我使用make命令时,编译的目标是libcat.a 和 libcat.so。
    libcat.a的成功编译需要依赖cat.cpp 和 cat.h,使用make命令调用GNU Make工具进行编译时,会自动检查cat.cpp 和 cat.h是否有更改,如果有更改才执行编译指令。
    编译的指令为:g++ -c -o libcat.a cat.cpp
    同理,libcat.so的编译。编译指令为:g++ -fPIC -shared -o libcat.so cat.cpp
  • 当我使用make clean指令时,会自动执行rm -f libcat.a libcat.so命令进行删除两个编译文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值