![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
makefile/cmake/gcc/gdb
文章平均质量分 54
makefile学习
酸菜。
爱生活,爱TXJ。
展开
-
Linux gdb调试教程1,启动调试
#include <iostream>using namespace std; int main (){ // 局部变量声明 int a, b; int c; // 实际初始化 a = 10; b = 20; c = a + b; cout << c; return 0;}一:启动gdb调试-g为带上调试信息,gdb demo1开启gdb调试。看到reading symbols from 后,则该可执行文件是带调试信息原创 2021-04-23 22:05:52 · 246 阅读 · 1 评论 -
Linux gdb内存泄漏调试
一:内存泄漏检查#include<iostream>#include<stdlib.h>using namespace std;void newtest(){ int *p = new int[10]; //申请40字节 return;}void malloctest(){ int *q = (int*)malloc(10); //申请10字节 return;}int main(void){ newtest(); malloctest();原创 2021-04-27 21:32:41 · 3715 阅读 · 1 评论 -
makefile make命令运行小结
make命令概述一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。make的退出码0表示成功执行。1如果make运行时出现任何错误,其返回1。2如果你使用了make的“-q”选项,并且make使得一些目标不需要更新,那么返回2。这个后面再解释。指定MakefileGNU make找寻默认原创 2022-04-10 16:15:25 · 4295 阅读 · 0 评论 -
makefile函数小结
函数语法概述在这里插入代码片字符串处理函数subst函数patsubst函数strip函数findstring函数filter函数filter-out函数sort函数word函数wordlist函数words函数firstword函数文件名操作函数dirnotdirsuffixbasenameaddsuffixaddprefixjoin其它函数foreach 函数if 函数call函数origin函数shell函数控制make的函数...原创 2022-04-08 00:00:27 · 324 阅读 · 0 评论 -
makefile 条件判断语句小结
主要有以下四种:(1)ifeq (条件表达式) endif(2)ifeq (条件表达式)elseendif(3)ifdef (条件表达式) #非空为真elseendif(4)ifndef (条件表达式) #非空为真elseendif说明:(1)条件表达式可以是比较变量的值,或是比较变量和常量的值。(2)注意条件分支里面不要以tab键开始,否则会被认为是命令(3)要注意条件表达式里面尽量不要是自动变量,因为条件变量的值是不确定的,有点类似于c语言里面if语句里面的原创 2022-04-06 21:05:29 · 846 阅读 · 0 评论 -
makefile变量小结
根据相关的知识点,从以下几个方面进行总结。变量基础在这里插入代码片变量当中的变量在这里插入代码片变量高级用法在这里插入代码片追加变量值在这里插入代码片override指示符在这里插入代码片多行变量在这里插入代码片环境变量在这里插入代码片目标变量在这里插入代码片模式变量在这里插入代码片...原创 2022-04-05 21:28:39 · 2141 阅读 · 0 评论 -
makefile 书写命令(二)
一:嵌套执行make在这里插入代码片二:定义命令包在这里插入代码片原创 2022-03-30 15:19:57 · 154 阅读 · 0 评论 -
makefile 书写命令(一)
一:命令的显示我们根据这段话来实践一下,y:= barx:= funinput : echo $(y) 可以看到在命令前(这里是echo)加上@时的显示,显然是不同的。带上参数时,可以看到,只是显示了命令,并没有执行。二:命令的执行这里说到了,如果要让第二条命令的执行依赖在第一条命令执行的基础上,那么这两个命令必须要在同一行,然后用;分隔,我们来实践下,y:= barx:= funinput : @cd pcie/ @pw原创 2022-03-30 13:46:08 · 131 阅读 · 0 评论 -
makefile 静态模式
前言:示例测试;OBJS = main.o g_a.o g_b.otarget : main.o g_a.o g_b.o gcc -o $@ $^#%.o:%.c$(OBJS):%.o : %.c gcc -c $< -o $@ @echo $@ @echo $<clean : -rm target *.o通过静态模式可以避免多次写gcc命令,从执行结果看,貌似静态模式的写法类似于一原创 2022-03-27 21:04:41 · 992 阅读 · 0 评论 -
makefile vpath和VPATH小结
一:先看VPATH吧。我们看到跟我一起学makefile当中的这段话。注意点有两点,(1)make只会在当前的目录下去寻找依赖文件和目标文件。(2)使用VPATH的方法,这点相对容易一些。我们先看第一点是什么意思。这是当前的目录结构。makefile的第一版是这样写的。#vpath %.c src#vpath %.h incVPATH = src:inctarget : main.o g_a.o g_b.o gcc -o target main.o g_a.原创 2022-03-27 16:20:25 · 1071 阅读 · 0 评论 -
makefile当中的常用的自动变量小结
target : main.o g_a.o g_b.o gcc -o $@ $^ @echo $@ @echo $^ main.o : main.c g_a.h g_b.h gcc -o main.o -c main.cg_a.o : g_a.c g_a.h gcc -o g_a.o -c g_a.cg_b.o : g_b.c g_b.h gcc -o g_b.o -c g_b.ca:原创 2022-03-26 22:05:38 · 609 阅读 · 1 评论 -
makefile wildcard patsubst使用小结
这是当前的目录:objs = main.o g_a.o g_b.target : $(objs) gcc -o target $(objs)main.o : g_a.h g_b.h gcc -c main.cg_a.o : g_a.h gcc -c g_a.cg_b.o : g_b.h gcc -c g_b.c.PHONY : cleansrc = $(wildcard *.c)obj = $(patsubst %.c,%原创 2022-03-26 11:52:11 · 484 阅读 · 0 评论 -
makefile的自动推导过程
这是我的Makefile里面的内容,但是执行make的时候报错了,没找到原因?target : main.o g_a.o g_b.o gcc -o target main.o g_a.o g_b.o -fPICmain.o : g_a.h g_b.hg_a.o : g_a.hg_b.o : g_b.h.PHONY : cleanclean : -rm target g_a.o g_b.o main.o有点纳闷了,源代码和之前的一遍博文是一样的内容。原创 2022-03-25 18:23:57 · 265 阅读 · 0 评论 -
makefile 伪目标小结
基本介绍的话可以看这个链接:https://seisman.github.io/how-to-write-makefile/introduction.html这里就主要总结一下使用过程:这个是基本的目录结构:makefile里面的内容:OBJ = main.o g_a.o g_b.otarget : $(OBJ) gcc -o target $(OBJ)$(OBJ) : main.c g_a.c g_b.c gcc -c main.c gcc原创 2022-03-10 18:31:12 · 178 阅读 · 0 评论 -
makefile原理简介
通过一个范例说明make是如何工作的。main.c#include<stdio.h>#include"g_a.h"#include"g_b.h"int main(int argc, char **argv){ printf("a = %d\n",a); printf("b = %d\n",b); return 0;}g_a.cint a = 10;g_a.hextern int a;g_b.cint b = 20;g_b.hexter原创 2022-03-08 14:03:27 · 208 阅读 · 0 评论 -
Linux CMake入门
一:安装和查看版本二:范例1学习(只有单个源文件)(1)构建源文件#include<stdio.h>int main(void){ printf("hello cmake\n"); return 0;}(2)书写CMakeLists.txtcmake_minimum_required (VERSION 2.8)project (demo)add_executable(main main.c)cmake_minimum_required : cma原创 2021-09-02 13:01:59 · 188 阅读 · 0 评论 -
makefile小结
<一>. 变量高级用法a. 替换变量中的共有部分,格式: $(var:a=b) 或是 ${var:a=b}意思是把变量var中所有以a字串结尾的a替换成b字串.示例:foo := a.o b.o c.obar := $(foo:.o=.c)$(bar)展开的值就是a.c b.c c.c类似的替换为“静态模式"bar := $(foo:%.o=%.c) 展开后跟上例一个效果。b. 变量赋值obj = a.o b.o 一般赋值,可以引用前后面的变量obj :原创 2020-07-07 13:49:28 · 142 阅读 · 1 评论 -
makefile中$@ $^ $「的使用
main.c#include"print2.h"int main(void){ print1("hello1"); print2("hello2"); return 0;}print1.c#include<stdio.h>void print1(char *p){ printf("%s\n",p);}print2.c#include<stdio.h>void print2(char *p){ printf("%s\n",p);}prin原创 2020-07-06 11:00:39 · 513 阅读 · 1 评论 -
更加简单的makefile文件编写之make的自动推导
简介:GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,所以我们就没必要去在每一个 .o 文件后都写命令,因为,我们的make会自动识别,并自己推导命令。只要make看到一个 .o 文件,它就会自动的把 .c 文件加在依赖关系中,例如如果make找到一个 1.o ,那么 1.c 就会是1.o 的依赖文件。并且gcc -c 1.c 也会被推导出来。我们来看:这个是我们文件的内容...原创 2020-03-29 17:46:03 · 187 阅读 · 0 评论 -
makefile编写不同目录下的文件的方法
整体目录结构://hello.c#include"myhead.h"int main(void){ printf("hello world\n"); return 0;}include文件夹下放着myhead.h文件,myhead.h文件的内容如下#include<stdio.h>makefile文件的内容如下:hello:hello.o gcc...原创 2020-02-14 13:08:12 · 1679 阅读 · 1 评论 -
makefile文件创建和使用变量(类似于c语言中的宏定义)
创建变量的目的:用来代替一个文本字符串:(1)系列文件的名字(2)传递给编译器的参数(3)需要查找源代码的目录(4)需要运行的程序(5)你需要输出信息的目录(6)你想做的其它事情变量定义的两种方式:(1)递归展开方式 VAR=var(2)简单方式 VAR:=var变量使用(VAR)用"(VAR)用"(VAR)用""则用"$$"来表示例如:OBJS=kang.o yul....原创 2020-02-13 14:44:32 · 726 阅读 · 0 评论 -
makefile文件简介及简单使用
Make简介:工程管理器,顾名思义,是指管理较多的文件。Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。Makefile格式 target:dependency_files <TAB> command例(1) ...原创 2020-02-12 14:44:30 · 1687 阅读 · 0 评论