仕様が同じで、Linuxディストリビューションが同じ2台のコンピュータAとBがある場合は、コンピュータAでコンパイルを「make」し、ディレクトリをコンピュータBにコピーし、問題なく「make install」できますか?
答え1
通常、両方のホストが同じ仕様(同じプロセッサアーキテクチャ、同じライブラリの同じバージョンのインストール、同じカーネルのインストール、参照設定ファイル/ライブラリの同じファイルシステム構造など)を持つ場合に可能です。しかし、Makefileで不快なことができるので可能これは不可能な状況です。
このmake
コマンドは通常、すべてのソースコードをコンパイルし、それをインストールされているライブラリとカーネルに関連付けて、バイナリ出力ファイルを生成します。
答え2
最近のバージョン2010をコンパイルする必要がありましたが、依存関係の問題のため、最新のオペレーティングシステムqemu
では難しい作業でした。Ubuntu 16.04
だから私はUbuntu 16.04でmake(コンパイル)を実行し、Ubuntu 10.04
Ubuntu 16.04でmake installを実行する必要がありました。
make
timestamps
取るべきアクションを決定するために使用されます。したがって、コンパイルされたファイルをコンパイル中のコンピュータからインストール中のコンピュータに転送するときは、タイムスタンプが保存されている限り機能する必要があります。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.1
Ubuntu 16.04システムに()をインストールする必要がありましたsudo apt-get install lib32z1
。