可以在不同的目录中编译 make 文件吗?

可以在不同的目录中编译 make 文件吗?

我曾经决定从源代码构建一个程序,但后来意识到我将无法再更新它,因此手动删除了所有它。

有没有办法make install不乱扔文件/?例如在桌面上创建一个程序文件夹,并在那里编译构建?

我使用的是 Debian 10.4。

答案1

README当编译一个不熟悉的源代码包时,您应该始终从读取它的和INSTALL文件(如果包中存在)开始。

制作精良的源代码分发 tarball 应该始终提取到与运行提取它的命令的位置相关的单个子目录中。但并非所有源代码发行版都制作精良:您应该始终首先检查内容列表tar tf tarball.tar.gz提取不熟悉的 tarball 之前,如果有必要,请为该特定源包创建一个工作目录,cd放入其中,然后在其中运行提取命令。

如果构建过程是./configure; make; make install(即它使用 Autoconf),那么您可以在该阶段使用命令行选项configure来确定最终结果将安装到哪里。请参阅./configure --help参考资料 获取特定源代码包中可用选项的列表。

你可能应该总是使用类似./configure --prefix=/usr/local, ./configure --prefix=/opt/<name of software package>, 或者也许./configure --prefix=$HOME/Desktop/My_Software/<name of software package>

如果构建过程仅以 开始,则 main和/或make中通常有许多变量,您可以编辑这些变量以确定安装位置。Makefileconfig.h

在运行之前make install(这通常是进程中可能需要以 root 身份运行的唯一部分,具体取决于程序需要安装到的位置),通常最好运行一下,make -n install因此它会列出命令如果在没有该选项的情况下执行,它将运行-n,并验证目标目录是否正确。

make clean通常会从源代码目录中删除编译过程的所有结果,并保持所有编译时配置文件不变。

一些(但不是全部)源代码包也有一个make uninstall会尝试删除make install.

如果主源代码目录包含名为 的子目录debian,其中包含名为rules和的文件control,则开发人员已包含*.deb从该源代码分发包自动构建包的功能。在这种情况下,您可以使用该debuild命令(或其等效命令之一,例如fakeroot debian/rules binary)来构建一个或多个*.deb可以使用dpkgapt照常安装的二进制包。

如果您想*.deb从尚未具有 Debian 打包工具的源代码包生成软件包,那么添加它们通常不会太困难。这有时称为“debianizing”源代码包。请参阅此链接:https://www.debian.org/doc/manuals/debmake-doc/ch04.en.html

相关内容