如何编写使用外部库进行编译的软件?

如何编写使用外部库进行编译的软件?

我想编写具有依赖项的开源软件。我拥有 C/C++ 技能和最低限度的 makefile 知识。但我对编码这样的./configure && make东西以及如何正确包含对其他库的依赖关系感到好奇。

哪里可以找到简单易懂的教程,学起来会不会很困难?

答案1

我不认为配置或制作很难学。然而,它们很复杂,因此学习起来可能很棘手——尤其是通过实验。例如,make 要求构建目标的命令严格使用制表符缩进,在许多情况下很难将其与空格区分开。

这是一个涵盖这两个(以及更多)的页面:http://autotoolset.sourceforge.net/tutorial.html#Compiling-with-Makefiles

还有一个关于 GNU 配置标准的页面:http://www.gnu.org/prep/standards/html_node/Configuration.html

请注意,这autoconf是用于创建配置脚本的工具;当然,您可以自行开发自己的配置脚本,但autoconf会获得标准类型的脚本,并且应该节省大量编程工作。

答案2

很多都是用 完成的autoconf。我没有特别推荐的教程(除了官方文档之外),但您将需要一个教程,而这正是您想要寻找的。 “Autoconf”通俗地指的是包括“automake”在内的一套工具。

我已经有一段时间没有这样做了,但我会尝试从我的笔记中勾画出整个过程:

  • 对于每个源目录(不要将源代码放在顶层,而是将它们放在子目录中),您需要创建一个Makefile.am;这遵循普通 makefile 的规则,但不包括编译目标,而是按照特定于 autoconf 进程的命名方案定义一些目标和变量。这将由 处理automake

  • 在顶层,您需要创建一个configure.ac文件。该autoscan工具可以为您完成此操作,然后您可以对其进行调整。

  • 然后,您需要从顶级目录开始依次运行:aclocalautomake -acautoheader(可能还需要automake -ac再次运行),然后是autoconf。这些都有解释其用途的手册页。

瞧!您的包裹已经准备好了。

学习它是一件很难的事情吗?

绝对是乏味我不会说它超级简单,不。如果您的项目很小并且仅针对特定平台,您可以编写一个自己的依赖项检查脚本,该脚本可以从 makefile 运行。

相关内容