打包so文件:

CC = g++

CFLAGS=-Wall -O2 -fPIC

TARGET = libbg.so

SRCS := $(wildcard *.cpp)

OBJS := $(patsubst %cpp, %o, $(SRCS))

all: $(TARGET)

$(TARGET): $(OBJS)

$(CC) $(CFLAGS) -shared -o $@ $^

%.o:%.cpp

$(CC) $(CFLAGS) -c $<

clean:

rm -f *.o $(TARGET)

普通编译:

CC = g++

CFLAGS=-Wall -O2

TARGET = main

SRCS := $(wildcard *.cpp)

OBJS := $(patsubst %cpp, %o, $(SRCS))

all: $(TARGET)

$(TARGET): $(OBJS)

$(CC) $(CFLAGS) -o $@ $^

%.o:%.cpp

$(CC) $(CFLAGS) -c $<

clean:

rm -f *.o $(TARGET)

其中

$@  表示目标文件

$^ 表示所有依赖项

$< 表示第一个文件

SRCS := $(wildcard *.cpp) 表示获取当前目录下的c文件集,放在变量SRCS中

OBJS := $(patsubst %cpp, %o, $(SRCS)) 表示将对应的c文件名转为o文件后放在下面的OBJS变量中

转载于:https://www.cnblogs.com/sssblog/p/9701091.html

Linux 多个cpp文件的编译(Makefile)相关推荐

  1. PointNet++等3D点云中用到的.cu、.cpp文件的编译的简单理解

    文章目录 1:cuda-c 2:一个简单的配置流程 3:.cu..cpp的关系 4:混合编译.cu..cpp 5:动态链接库(windows.linux) 6:NVCC学习笔记 7:g++的一些常用命 ...

  2. Linux下运行.cpp文件

    如何在Ubuntu16下运行一个简单的.cpp文件呢,做法如下: 假设我在桌面上写了一个hell,world程序; 保存为abc.cpp 然后在终端打开: 1.点击保存的文件的属性,看在哪里,我的是在 ...

  3. as 怎么将多个cpp文件代码编译成so_一段C代码,是如何编译运行的?

    想一下, 我们想把源文件放到内存中执行,应该怎么做? 直觉上我们需要将源代码翻译成机器语言,以某种结构组织代码和数据.再让CPU去按这种结构读取指令.如果是多个源文件, 我们可能还需要按某种方式将它们 ...

  4. as 怎么将多个cpp文件代码编译成so_你编写的Java代码是咋跑起来的?

    如果你是一名 Java 开发人员,你肯定指定 Java 代码有很多种不同的运行方式.比如说可以在开发工具(IDEA.Eclipse等)中运行,可以双击执行 jar 文件运行,也可以在命令行中运行,甚至 ...

  5. Linux编辑firmware的文件,rk3328编译Linux固件

    一.编译 Linux 固件 这一章将介绍编译 ROC-RK3328-CC Linux 固件的整个流程. 1.1 准备工作 Linux 固件在如下的环境中编译: Ubuntu 16.04 amd64 安 ...

  6. linux 下根据cpp文件快速书写头文件

    假设我们现在有一个hello.cc文件,我们如果想要书写它的头文件hello.h,使用如下的命令即可: cat hello.cc | grep "^\w.*)$" > hel ...

  7. Linux下xxx.c文件与xxx.cpp文件的编辑和运行命令

    Linux平台下.c文件的编辑和运行命令 在 Linux 平台下我是用vim文本编辑器编写代码的 一:在Linux环境下编辑.编译并执行一个 xxx.c 文件步骤 1.首先要创建一个xxx.c文件 输 ...

  8. linux之让终端支持C++11/14编译cpp文件

    1  问题 我们的项目很多智能指针,但是我linux的终端肯定不支持C++11/14, 我们平时都是用的下面的命令编译c++文件 g++ -g file.cpp -o file r 如果是用c++11 ...

  9. linux中命令对c文件进行编译,Linux下C语言编译基础及makefile的编写

    这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在L ...

最新文章

  1. eplan和西门子plc的对接_玩转西门子全集成自动化之TIA Selection Tool
  2. Linux日志系统分析:rsyslog、syslog和klog
  3. 腐蚀rust服务器命令_RUST++ MOD
  4. hdu 1505 City Game
  5. 解读《新一代人工智能发展规划》,企业如何才能迎来产业高潮
  6. centOS 6.0无法运行dump指令的解决方法
  7. java代码 计算器_java代码---------计算器实现
  8. Intouch和S7300连接 DAServer分组 SMC驱动备份
  9. 你能抱我一下,好吗?
  10. 嵌入式gdbserver远程调试【原创】
  11. lvs,haproxy实现负载均衡
  12. Python连接mysql密码用密文_druid配置数据库连接使用密文密码
  13. oracle hibernate 注解,Hibernate4实战之Hibernate4注解零配置
  14. 全国省市县区乡镇级别的矢量文件(百度网盘可下载)
  15. 基于Vue的移动端图片裁剪组件 vue-clip(完美兼容ios与安卓)
  16. 经典书籍《宽客人生》阅读心得
  17. ROS下里程计辅助2D激光雷达去运动畸变
  18. 【FPGA】FPGA对AD7606进行串行数据采集
  19. java判断字母是否为元音_Java程序来检查字母是元音还是辅音
  20. gt,gte,lt,lte含义

热门文章

  1. PHP之preg_replace()与ereg_replace()正则匹配比较讲解
  2. winform C#的委托事件在winform窗体中传值,也可用于刷新另一窗体(窗体A刷新窗体B)...
  3. MySQL中的配置参数interactive_timeout和wait_timeout
  4. 理解ASP.NET MVC Framework Action Filters(翻的)
  5. 看别人的C/C++代码时发现自己所不知道的语法~
  6. mysql数据库设计实践_MYSQL教程分享20个数据库设计的最佳实践
  7. C 引用和指针的区别
  8. leetcode算法题--骑士拨号器
  9. C/C++循环输入问题
  10. kubernetes 清理日志命令_Kubernetes之容器数据写满磁盘解决方法