-
Makefile变量的高级用处
所属栏目:[语言] 日期:2022-07-13 热度:155
我们之前已经学习过变量的定义和基本的赋值运算,我们可以更深入的了解一下变量的一些高级的用法。高级使用方法有两种:一种是变量的替换引用,一种是变量的嵌套引用。这是我们在使用的时候比较常见的两种使用方法,我们来具体分析使用一下变量的这两种高[详细]
-
嵌套执行make的示范
所属栏目:[语言] 日期:2022-07-13 热度:132
Makefile 中 嵌套执行 make 大部分是在大的工程项目中使用的,那么我们就通过一个大的项目工程来详细的分析一下如何嵌套执行 make。 假设有一个 MP3 player 的应用程序,它可以被划分为若干个组件:用户界面(ui)、编解码器(codec)以及数据管理库(db)[详细]
-
make命令参数和选项大合集
所属栏目:[语言] 日期:2022-07-13 热度:73
我们在在执行 make 命令时,有的时候需要加上一下参数选项来保证我们的程序的执行,其实之前已经遇到过 make 在执行命令的时候需要添加上参数选项,比如只打印命令但不执行使用的参数是 -n ,还有只执命令不打印命令的参数选项是 -s,包含其它文件的路径参[详细]
-
Makefile嵌套实行make
所属栏目:[语言] 日期:2022-07-13 热度:96
这个章节主要讲解的是在 Makefile 中嵌套执行 make。我们都知道在一个大的工程文件中,不同的文件按照功能被划分到不同的模块中,也就说很多的源文件被放置在了不同的目录下。每个模块可能都会有自己的编译顺序和规则,如果在一个 Makefile 文件中描述所有[详细]
-
Makefile命令的编辑
所属栏目:[语言] 日期:2022-07-13 热度:184
通过上个章节的描述,我们已经知道了 Makefile 的规则是什么,他是由依赖关系规则和命令组成的。所使用的命令是由 shell 命令行组成,他们是一条一条执行的。多个命令之间要使用分号隔开,Makefile 中的任何命令都要以tab键开始。多个命令行之间可以有空行[详细]
-
Makefile include文件包括
所属栏目:[语言] 日期:2022-07-13 热度:158
这个章节主要讲的是 Makefile 中包含其他的文件。包含其他文件使用的关键字是 include,和 C 语言包含头文件的方式相同。 当 make 读取到 include 关键字的时候,会暂停读取当前的 Makefile,而是去读 include 包含的文件,读取结束后再继读取当前的 Makef[详细]
-
Makefile中另外的常用函数
所属栏目:[语言] 日期:2022-07-13 热度:116
之前学习过了 Makefile 中的字符串操作文件和文件名操作函数,我们今天再来看一下 Makefile 中的其他的函数。以下是这些函数的详细说明。 $(foreach var,list,text) 函数的功能是:把参数list中的单词逐一取出放到参数var所指定的变量中,然后再执行text所[详细]
-
Makefile常用文件名运作函数
所属栏目:[语言] 日期:2022-07-13 热度:148
我们在编写 Makefile 的时候,很多情况下需要对文件名进行操作。例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等。当遇到这样的问题的时手动修改是不太可能的,因为文件可能会很多,而且 Makefile 中操作文件名可能不止一次。所以 Makefile[详细]
-
Makefile常用字符串处置函数
所属栏目:[语言] 日期:2022-07-13 热度:145
学习使用函数之前,先来看一下函数的语法结构。函数的调用和变量的调用很像。引用变量的格式为$(变量名),函数调用的格式如下: $(function arguments) 或者是 ${function arguments} 其中,function 是函数名,arguments 是函数的参数,参数之间要用逗号[详细]
-
Makefile文件是哪些
所属栏目:[语言] 日期:2022-07-12 热度:117
我们教程主要是讲的是 Makefile 。很多 Linux(Unix) 做开发的初学者不了解 Makefile 是什么,甚至大部分 Windows 开发工程师对 Makefile 都特别陌生。这个其实很正常,如果你是在 Windows 下作开发的话不需要去考虑这个问题,因为 Windows 下的集成开发环[详细]
-
GDB catch命令 创立捕捉断点
所属栏目:[语言] 日期:2022-07-12 热度:94
要知道,GDB 调试器支持在被调试程序中打 3 种断点,分别为普通断点、观察断点和捕捉断点,其中普通断点用 break 命令建立(可阅读《GDB break》一节),观察断点用 watch 命令建立(可阅读《GDB watch》一节),本节将讲解如何使用 catch 命令建立捕捉断[详细]
-
GDB条件断点 condition命令 解说
所属栏目:[语言] 日期:2022-07-12 热度:132
前面章节给大家介绍了 GDB 调试器中普通断点、观察断点以及捕捉断点的功能和用法。其中值得一提的是,对于普通断点的建立,可以使用如下格式的 break 命令: (gdb) break ... if cond ... 参数用于指定生成断点的具体位置;cond 参数用于代指某个表达式。[详细]
-
GDB单步调节程序
所属栏目:[语言] 日期:2022-07-12 热度:87
《调用GDB调试器的几种方式》一节中提到,借助 next 命令可以控制 GDB 单步执行程序。所谓单步调试,就是通过一行一行的执行程序,观察整个程序的执行流程,进而尝试发现一些存在的异常或者 Bug。 根据实际场景的需要,GDB 调试器共提供了 3 种可实现单步[详细]
-
GDB print和display命令 查视变量的值
所属栏目:[语言] 日期:2022-07-12 热度:131
前面章节中提到,使用 GDB 调试程序,最常用的方法是:单步调试或者断点调试程序,期间通过查看某个变量或者表达式的值,判断当前程序的执行过程是否正确,不断缩小异常或 Bug 位于代码中的范围,最终找到并修复。 对于在调试期间查看某个变量或表达式的值[详细]
-
GDB禁用与删除断点
所属栏目:[语言] 日期:2022-07-12 热度:94
我们知道,GDB 调试器支持 3 种断点,分别为普通断点(用 break 命令创建)、观察断点(用 watch 命令建立)以及捕捉断点(用 catch 命令建立)。并且如果需要的话,我们可以在被调试程序中打多个断点,甚至于 GDB 允许在同一位置打多个断点。 这就产生一[详细]
-
GDB handle命令 信号处置
所属栏目:[语言] 日期:2022-07-12 热度:66
C、C++ 程序中,信号常常作为进程间通信的一种重要手段。举个例子: #include stdio.h #include unistd.h #include signal.h void display(){ printf(http://c.biancheng.net/gdb/); } int main () { pid_t cpid; pid_t ppid; signal(SIGINT,display); if([详细]
-
GDB frame和backtrace命令 检查栈信息
所属栏目:[语言] 日期:2022-07-12 热度:131
当程序因某种异常停止运行时,我们要做的就是找到程序停止的具体位置,分析导致程序停止的原因。 对于 C、C++ 程序而言,异常往往出现在某个函数体内,例如 main() 主函数、调用的系统库函数或者自定义的函数等。要知道,程序中每个被调用的函数在执行时,[详细]
-
GDB编辑及搜索源码
所属栏目:[语言] 日期:2022-07-12 热度:67
本节主要讲解的是在 GDB 内对源文件中的代码进行修改和查找,分别对应 GDB 中的 edit 命令和 search 命令,下面是对这两个命令的详细介绍。 GDB edit命令:编辑文件 在 GDB 中编辑源文件中使用 edit 命令,该命令的语法格式如下: (gdb) edit [location] ([详细]
-
GDB help命令 查看目标命令的详细用法
所属栏目:[语言] 日期:2022-07-12 热度:185
截止到本节,我们接触了大量的 GDB 命令,甚至很多命令还拥有不同的语法格式和参数。这就产生一个问题,如何才能记住它们呢? 实际上,GDB 调试器的开发人员也想到了这个问题。为了降低用户使用 GDB 调试器的学习成本,GDB 提供了 help 命令,它可以帮用户[详细]
-
Makefile伪标准
所属栏目:[语言] 日期:2022-07-12 热度:137
这一个章节我们主要讲的是 Makefile 中的伪目标。所谓的伪目标可以这样来理解,它并不会创建目标文件,只是想去执行这个目标下面的命令。伪目标的存在可以帮助我们找到命令并执行。 使用伪目标有两点原因: 避免我们的 Makefile 中定义的只执行的命令的目[详细]
-
Makefile ifeq ifneq ifdef和ifndef 条件判别
所属栏目:[语言] 日期:2022-07-12 热度:189
日常使用 Makefile 编译文件时,可能会遇到需要分条件执行的情况,比如在一个工程文件中,可编译的源文件很多,但是它们的类型是不相同的,所以编译文件使用的编译器也是不同的。手动编译去操作文件显然是不可行的(每个文件编译时需要注意的事项很多),[详细]
-
Makefile隐含准则
所属栏目:[语言] 日期:2022-07-12 热度:129
这个章节讲述的是 Makefile 的隐含规则,所谓的隐含规则就是需要我们做出具体的操作,系统自动完成。编写 Makefile 的时候,可以使用隐含规则来简化Makefile 文件编写。 实例: test:test.o gcc -o test test.o test.o:test.c 我们可以在 Makefile 中这样[详细]
-
Makefile路径搜索使用示例
所属栏目:[语言] 日期:2022-07-12 热度:112
我们了解了一下路径搜索的使用方式,我们再来看一下具体的使用方法。 为了体验实例的效果的更加明显,我们按照源代码树的布局来放置文件。我们把源代码放置在src目录下,包含的文件文件是:list1.c、list2.c、main.c 文件,我们把头文件包含在 include 的[详细]
-
Makefile目标文件搜寻 VPATH和vpath
所属栏目:[语言] 日期:2022-07-12 热度:151
我们都知道一个工程文件中的源文件有很多,并且存放的位置可能不相同(工程中的文件会被放到不同的目录下),所以按照之前的方式去编写 Makefile 会有问题。 我们之前列举的例子,所有的源文件基本上都是存放在与 Makefile 相同的目录下。只要依赖的文件存[详细]
-
Makefile自主化变量
所属栏目:[语言] 日期:2022-07-12 热度:148
关于自动化变量可以理解为由 Makefile 自动产生的变量。在模式规则中,规则的目标和依赖的文件名代表了一类的文件。规则的命令是对所有这一类文件的描述。我们在 Makefile 中描述规则时,依赖文件和目标文件是变动的,显然在命令中不能出现具体的文件名称[详细]
