簡潔なバージョン:インストールを介してプロジェクトを再コンパイルしようとします。すべてのファイルを正しい場所に入れたいです。
長いバージョン:目的のプロジェクトを構築するためにDockerコンテナを作成しました。成功しました。その理由は、ag(シルバーサーチ)を構築するために最終的なDockerコンテナにpcre-develなどのすべての開発依存関係をインストールしたくないからです。
したがって、プロセスは次のようになります。 ./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
すべてがコンパイルされるシステムで実行することです。インストールと印刷に必要な事項を評価します。しかし、実行されない注文する。比較的短い場合は、2つのターミナルウィンドウの間で切り取り、貼り付けてターゲットで手動で実行できます。 Makefileにはこれをパッケージ化するターゲットがあるかもしれません(理解しやすくなるMakefile.inを見てみると良いかもしれません)。