私はこのように構築していますコンパイラのソースコードを持っている:バイナリをビルドし、それを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
パスを調べませんか?
私はスーパーユーザーに同様の質問がありましたが、多くの編集が行われたので、新しい質問には何の反応もなかったので、ここで書いています。
あなたは静的なビンを作成しているか、共有オブジェクト(.so)を使用していますか。すべてのマシンで同じディレクトリ階層を作成できない場合、 '.so'への埋め込みパスは正しいlocに存在しないため失敗します。なぜ私はあなたに「許可が拒否されましたか」を知りません。 objの所有者(おそらく整数値)のユーザー/グループNAMESがビルドマシンと一致し、permがこれらのディレクトリに正しく設定されていることを確認しましたか? permの問題を克服するためにrmtマシーンに 'su root 'をできない場合は、すべてのライブラリが埋め込まれた静的バイナリを構築する方が良い解決法かもしれません。 – shellter
ありがとうございます。はい、私は 'configure'ステートメントに' --disable-shared'オプションを渡しています。しかし、それにもかかわらず、installdirにはまだいくつかの '.so'ファイルがあることに気付きました。 'Permission Denied'はおそらく '.so'ファイル用のビルドマシンと同じディレクトリを探しているからです(あなたが言ったように)。私は静的なビンを作ることができないので、問題はただのものだと思う。 – Sayan
'[make] static linking'を検索し、関連する問題に対していくつかの良い答えを見つけました。がんばろう。 – shellter