4

Make ベースのコードベースで sbox を問題なく使用しています。現在、私は scons ベースのコードベースを使用しており、奇妙な問題が発生しています。

Scratchbox 内で、scons が g++ を見つけられないようです。たとえば、次のようなことを実行しようとします。

o こんにちは hello.c

実行する必要がある場合:

g++ -o こんにちは hello.c

したがって、おそらくその g++ 文字列変数は空です。g++ が存在し、PATH に - 「どの g++」が /scratchbox/compilers/bin/g++ を生成します。

同じソースがスクラッチボックスの外でも問題なくビルドされるため、scons やコードベースで問題になることはありません。Scratchbox が機能する場合、scratchbox の外部で設定される特別な環境変数はありません。

/usr/bin/g++ を /scratchbox/compilers/bin/g++ にシンボリックにリンクすると、もう少し進んで (正しい見た目の g++ コマンドが生成されます)、実行すると次のようになります。

sb_gcc_wrapper (g++): /scratchbox/compilers/arm-linux-cs2007q3-51sb3/bin/sbox-arm-none-linux-gnueabi-g++: そのようなファイルまたはディレクトリはありません

リストされたファイル存在します。

PATH には /scratchbox/compilers/bin、SBOX_REDIRECT_FROM_DIRS には /usr/bin、SBOX_REDIRECT_TO_DIRS には /scratchbox/compilers/bin が含まれているので、検索できるはずだと思います。

任意の提案をいただければ幸いです! ありがとう、レイ

編集:おそらく関連しています-sconsファイル内のフルパスを追加しない限り、pkg-configも見つかりません

4

1 に答える 1

8

sconsはPATH環境変数を伝播しないため、たとえば「どのg++」をテストしてもあまり役に立ちません。

Either set the compilers directly, e.g.
env['CXX'] = '/scratchbox/compilers/bin/g++'

独自の明示的なPATHを作成する

path = ['/scratchbox/compilers/bin/','/bin', '/usr/bin', '/sbin','/usr/sbin']
env = Environment(ENV = {'PATH' : path})

または、シェルからPATHenv変数を使用します

import os
env = Environment(ENV = {'PATH' : os.environ['PATH']})
于 2009-08-07T08:18:39.127 に答える