3

私はこのように構築していますコンパイラのソースコードを持っている:バイナリをビルドし、それをUnixのいくつかのマシンで使うには?

/path/to/srcdir/configure --prefix=/path/to/installdir 
make 
make install 

私は誰も経由せずに、コンパイラのバイナリを使用することができることを意図して、他のマシンに結果の「インストールディレクトリ」を配布したいです3段階ビルドプロセス(私は配布用のtarballにinstalldirを含めています)。テストのために

、私は別のユーザーで別のマシンにインストールディレクトリをコピーして、ちょうど私がちょうどこのように、コピーされたバイナリを使用してテストプログラムをコンパイルしようとしています:

installdir/bin/ucc -mp -o test load_bl.c 

その後、私は次のようにエラーが表示されます。

cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/include: Permission denied 
cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/include: Permission denied 
cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/x86_64-redhat-linux/include: Permission denied 

/home/sghosh/normalbuild/installは私のビルドマシン上でconfigure中に--prefixとして指定されているものです。 installdir/bin/uccバイナリはinstalldirの下にあるopen64-gcc-4.2.0ディレクトリにいくつかのファイルが必要ですが、それは--prefixに記載されているパスなので、まだそれを探していて、現在のマシンの同じディレクトリを調べたいと思っています。参考までに、私はsudo/root権限を持っていません。

どのマシンでも動作するバイナリディストリビューションを作成します(一度ビルドし、任意の場所でソートします)。この場合、最初の--prefixパスを調べませんか?

私はスーパーユーザーに同様の質問がありましたが、多くの編集が行われたので、新しい質問には何の反応もなかったので、ここで書いています。

+0

あなたは静的なビンを作成しているか、共有オブジェクト(.so)を使用していますか。すべてのマシンで同じディレクトリ階層を作成できない場合、 '.so'への埋め込みパスは正しいlocに存在しないため失敗します。なぜ私はあなたに「許可が拒否されましたか」を知りません。 objの所有者(おそらく整数値)のユーザー/グループNAMESがビルドマシンと一致し、permがこれらのディレクトリに正しく設定されていることを確認しましたか? permの問題を克服するためにrmtマシーンに 'su root 'をできない場合は、すべてのライブラリが埋め込まれた静的バイナリを構築する方が良い解決法かもしれません。 – shellter

+0

ありがとうございます。はい、私は 'configure'ステートメントに' --disable-shared'オプションを渡しています。しかし、それにもかかわらず、installdirにはまだいくつかの '.so'ファイルがあることに気付きました。 'Permission Denied'はおそらく '.so'ファイル用のビルドマシンと同じディレクトリを探しているからです(あなたが言ったように)。私は静的なビンを作ることができないので、問題はただのものだと思う。 – Sayan

+0

'[make] static linking'を検索し、関連する問題に対していくつかの良い答えを見つけました。がんばろう。 – shellter

答えて

0

チェックこのツール:https://github.com/pgbovine/CDE

CDEは、自動的に、彼らは任意のインストールや設定せずに、別のコンピュータ上で同じように実行できるように、コマンドのLinuxの任意のセットの実行に関連するコード、データ、および環境をパッケージ化するツールです。 。

関連する問題