linux下debug与release编译的方法

简介: linux下debug与release编译的方法

如果是DEBUG,则加参数-Ddebug,release'版本则不加该参数。


一般,在开发测试阶段用debug版本,而上线发布用release版本。


使用Makefile定制编译不同版本,避免修改程序和Makefile文件,将会十分方便。


读了一些资料,找到一个解决方法,Makefile预定义宏与条件判断,结合make预定义变量,进


行条件编译。 比如,


有一个test.cpp,


包含这段代码


#ifdef debug//your code
#endif你


希望在debug版本要执行它,在release版本不执行。


我们可以写这样的一个Makefile:


1 ver = debug
2
 3
ifeq ($(ver), debug)
 4
ALL: test_d
 5 CXX
FLAGS = -c -g -Ddebug 6 else
 7 ALL: test_r
8 CXXFLAGS = -c -O3
 9 endif10
11 test_d: test.do
12 g++ -o $@ $^
13
14 test_r: test.ro
15 g++ -o $@ $^
16
17 %.do: %.cpp
18 g++ $(CXXFLAGS) $< -o $@
19
20 %.ro: %.cpp
21 g++ $(CXXFLAGS) $< -o $@


简单说一下,Makefile根据ver的不同定义了不同的编译选项CXXFLAGS与输出程序ALL,debug版本输出程序是test_d,release版本输出程序是test_rdebug版本编译选项是"-c -g -Ddebug",release版本编译选项是"-c -O3"debug版本object文件后缀是".do",release版本object文件后缀是".ro"debug版本编译选项使用"-D"定义宏debug,使得your code能够执行。不同版本的编译选项、object文件、输出程序均不同,所以可以同时编译两个版本的程序,互不影响。 Makefile执行时,首先判断ver变量,如果ver的值是debug,编译debug版,否则编译release版。当然,默认情况下是编译debug版的。如果想编译release版,要怎么做?只要在执行make时,对ver变量赋值,使得ver的值不为debug,比如# make ver=release

相关文章
|
8天前
|
Linux 开发工具 C语言
Linux 安装 gcc 编译运行 C程序
Linux 安装 gcc 编译运行 C程序
31 0
|
21天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
22 0
|
28天前
|
Ubuntu Linux
常用Linux开机启动添加方法
常用Linux开机启动添加方法
17 1
|
6天前
|
人工智能 Linux
Linux查找大文件的方法
Linux查找大文件的方法
|
8天前
|
Linux 开发工具 Android开发
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
14 0
|
21天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
33 0
|
21天前
|
Ubuntu Java Linux
linux安装软件和卸载的几种方法
linux安装软件和卸载的几种方法
10 0
|
23天前
|
监控 Linux
|
27天前
|
存储 缓存 监控
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
152 0
|
28天前
|
Prometheus 监控 数据可视化
linux分析方法与技巧
【4月更文挑战第3天】在Linux环境中,进行日志分析和系统性能分析的关键方法包括:使用`cat`, `less`, `tail`查看和过滤日志,`logrotate`管理日志文件,`rsyslog`或`syslog-ng`聚合日志,以及通过`top`, `mpstat`, `pidstat`, `free`, `iostat`, `netstat`, `strace`, `sar`, `dstat`等工具监控CPU、内存、磁盘I/O和网络。对于高级分析,可利用Brendan Gregg的性能工具,以及Grafana、Prometheus等可视化工具。
19 2
linux分析方法与技巧