web-dev-qa-db-ja.com

共有libで2つのg ++​​実行可能ファイルを持つことは可能ですか?

奇妙に聞こえるかもしれませんが、2つのg ++​​実行可能ファイルが必要です。現在正常に動作している通常の/ usr/bin/g ++に1つ。もう1つは/ sandbox/g ++の下にあり、apparmorによって保護されています。ただし、g ++(シンボリックリンクではなく、元の実行可能ファイルg ++-4.6)を/ sandbox/g ++にコピーすると、次のエラーで実行できません。

g++-4.6: error trying to exec 'cc1plus': execvp: No such file or directory

通常のg ++​​と同じパス/ライブラリを使用するように設定するにはどうすればよいですか?上記のエラーの一般的な答えをオンラインで検索したのは、g ++を再インストールすることですが、g ++は正常に機能しています。これを、同時に機能させたいだけです。

提案をありがとう!

編集:

BashrcにいくつかのPATHルールを追加した後、cc1plusが見つかりましたが、含まれているすべてのファイルパスが混乱しています。ローカルでソースファイルを作成するという提案に従い、その構成方法を確認すると思います。

1
Frost

これを試して:

cd ~
cp /usr/bin/g++ gx
touch x.cpp
strace ./gx -o x x.cpp 2>xlog

同じエラーメッセージで失敗し、xlogで、g ++が相対ディレクトリ../lib/etcでcc1plusを見つけることを期待していることがわかります。これは、apparmorに関係ありません。

さて、ソースから自分でビルドしたい場合は、g ++がcc1plusを他の場所で探すようにするために使用できる構成設定がおそらくありますが、そのオプションを先取りすると、g ++は通常のインストール済みディレクトリから実行する必要があります。 g ++ will通常のディレクトリにあるそれ自体のコピーから実行されます。もちろん名前が変更されます。もしそれがあなたのニワトリを育てれば、あなたはそのコピーをapparmorにかけることができると思います。

0
Salt