linux - Makefile 解释。理解别人的 Makefile
问题描述
我对在 Linux 上编程比较陌生。
我了解 Makefiles 用于在编译多个文件时简化编译过程。不必每次需要编译和运行程序时都编写“g++ main.cpp x.cpp y.cpp -o 可执行文件”,而是可以将其放入 Makefile 并在该目录中运行 make。
我正在尝试使用此处使用 tmrh20 库的 nRF24L01 无线电让 RPi 和 Arduino 相互通信。我已经成功使用 tmrh20 的 Makefile 来构建所需的可执行文件(在 RPi 上)。但是,我想使用 tmrh20 的库来构建我自己的可执行文件。
我看过几个关于 Makefile 的教程视频,但似乎仍然无法拼凑 tmrh20 中发生的事情。
有问题的 Makefile (1) 在这里。 我相信它在这里以某种方式引用了第二个 Makefile (2)(用于文件名?)。(为什么这是必要的?)
如果它可以帮助任何人理解(我花了一段时间),我必须使用 SPIDEV(此处的说明)构建 RF24 目录中的 Makefile (3),它产生了几个我认为与 Makefile (1)&(2) 相关的目标文件)。
我如何从 tmrh20 的 Makefile 中找出我需要哪些文件来制作我自己的 Makefile(如果这有意义的话?)他似乎在他的 Makefile 中使用了未定义的变量?或者也许在别处定义?
为我糟糕的解释道歉。
解决方案
规范序列不只是make
和make install
。有一个初始./configure
步骤(这样的文件在这里)设置所有内容并生成make
步骤中使用的几个文件。
您只需要configure
成功运行此脚本一次,除非您想更改构建参数。我说“成功”是因为第一次执行通常会抱怨您缺少库或头文件。但是因斯./configure
运行没有错误,make
应该make install
运行没有错误。
PS:我没有尝试编译它,但由于该项目相当全面configure
,它可能已经完成,如果您遵循通常的程序,您不需要调整 makefile。
推荐阅读
- node.js - 使用节点 oracledb 调用过程时无法读取未定义的属性“getRows”
- python - 读取数据疑难解答
- vuejs2 - Vue2 $emit 没有触发回调
- r - 是否有包、方法或模型可以在 R 中本地转录音频(语音)而不调用 API
- android - 运行 Flutter 身份验证时出现黑屏
- python - 在不知道行数的情况下根据行数将数据框分成六个相等的部分 - 熊猫
- python - 我从网站上抓取图像得到了这个输出
- android - android以编程方式将主题设置为edittext并将可绘制背景添加到按钮
- php - 用另一个数组映射一个 PHP 数组
- python - Python - 删除二维列表中的列