![如何安装用“make”预先构建的软件?](https://linux22.com/image/90897/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85%E7%94%A8%E2%80%9Cmake%E2%80%9D%E9%A2%84%E5%85%88%E6%9E%84%E5%BB%BA%E7%9A%84%E8%BD%AF%E4%BB%B6%EF%BC%9F.png)
简洁版本: make install 尝试重新编译项目。我只想将所有文件放在正确的位置。
长版:我创建了一个 docker 容器来构建我想要的项目。这是成功的。理由是,我不想在我的最终 docker 容器上安装所有开发依赖项,例如 pcre-devel 等,只是为了构建 ag(银色搜索器)。
所以过程是:我用 ./configure 和 make 预烘焙我的源代码。然后我进入我的最终容器并只运行 make install。据我了解, make install 只是将文件复制到正确的位置。但它却试图重新编译该项目。我已经发出了 make 问题,那么为什么 make install 再次尝试重建项目呢?
正在做的具体项目是 ag,银色搜索者
我收到此错误:
bash-4.2# ./ag --version
ag version 0.32.0
Features:
+jit +lzma -zlib
bash-4.2# make install
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /opt/sources/the_silver_searcher/missing autoheader)
rm -f src/stamp-h1
touch src/config.h.in
cd . && /bin/sh ./config.status src/config.h
config.status: creating src/config.h
config.status: src/config.h is unchanged
CC src/ignore.o
In file included from src/ignore.c:10:0:
src/options.h:7:18: fatal error: pcre.h: No such file or directory
#include <pcre.h>
^
compilation terminated.
make: *** [src/ignore.o] Error 1
bash-4.2#
当然我不想安装 PCRE 依赖项。但这不应该是问题,因为我已经有了二进制文件。怎么了?
答案1
对于某些项目,“安装”阶段可能相当简单。因此,另一种方法可能是make -n install
在编译所有内容的机器上运行。这将评估安装和打印所需的内容但不执行命令。如果这相对较短,您可以在两个终端窗口之间进行剪切和粘贴,以便在目标上手动执行它们。 Makefile 中甚至可能有一个目标为您打包它(尽管您可能想查看 Makefile.in ,这可能更容易理解)。