如何安装用“make”预先构建的软件?

如何安装用“make”预先构建的软件?

简洁版本: 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 ,这可能更容易理解)。

相关内容