あるコンピュータでコンパイルし、別のコンピュータで「make install」できますか?

あるコンピュータでコンパイルし、別のコンピュータで「make install」できますか?

仕様が同じで、Linuxディストリビューションが同じ2台のコンピュータAとBがある場合は、コンピュータAでコンパイルを「make」し、ディレクトリをコンピュータBにコピーし、問題なく「make install」できますか?

答え1

通常、両方のホストが同じ仕様(同じプロセッサアーキテクチャ、同じライブラリの同じバージョンのインストール、同じカーネルのインストール、参照設定ファイル/ライブラリの同じファイルシステム構造など)を持つ場合に可能です。しかし、Makefileで不快なことができるので可能これは不可能な状況です。

このmakeコマンドは通常、すべてのソースコードをコンパイルし、それをインストールされているライブラリとカーネルに関連付けて、バイナリ出力ファイルを生成します。

答え2

最近のバージョン2010をコンパイルする必要がありましたが、依存関係の問題のため、最新のオペレーティングシステムqemuでは難しい作業でした。Ubuntu 16.04だから私はUbuntu 16.04でmake(コンパイル)を実行し、Ubuntu 10.04Ubuntu 16.04でmake installを実行する必要がありました。

maketimestamps取るべきアクションを決定するために使用されます。したがって、コンパイルされたファイルをコンパイル中のコンピュータからインストール中のコンピュータに転送するときは、タイムスタンプが保存されている限り機能する必要があります。meta-dataディレクトリツリーにファイルを保存および復元するために使用できるさまざまなツールがあります。メタストア子キャッシュメタ。 gitはタイムスタンプを保存しないため、後者はgitリポジトリに使用されます。次のようなその他のツール同期CP以前の2つのツールと同様に、明示的に保存して復元することなく、タイムスタンプを維持しながらファイルを転送できます。

私と同じように、gitサーバーを使用して2つのコンピュータ(git pushとgit pull)間でファイルを転送しています。必要な手順は次のとおりです。

#Computer 1 (where compilation is to be done)
make
git-cache-meta --store #this will create a .git_cache_meta file in the current directory
git add .
git commit -m "installed binaries; preserving timestamps"
git push origin master #or whatever may be your remote repository, and branch


#Computer 2 (where install is to be done)
git pull origin master #or use git clone <remote repository URL> <branch name>
git-cache-meta --apply
make install

あなたの場合は、リモートGitリポジトリなどを気にすることなくrsyncタイムスタンプ()を保存しながらファイルをコピーするので、より簡単な解決策のように見えます。-t option

これを行うために使用する方法は次のとおりですrsync

rsync -a <source> <destination>

もう一度cpコマンドを使用してください。

cp -a <source> <destination>

メモ:お客様の場合、コンピュータとオペレーティングシステムは同じですが、他の場合はそうではない可能性があり、その場合は動的依存関係(ランタイム依存関係)を処理する必要があります。たとえば、私の場合は、libz.so.1Ubuntu 16.04システムに()をインストールする必要がありましたsudo apt-get install lib32z1

関連情報