我一直在使用 sbox 和基于 Make 的代码库,没有任何问题。现在
我正在使用基于 scons 的代码库,但遇到了一些奇怪的问题。
似乎在 Scratchbox 中,scons 找不到 g++。例如,它
尝试执行以下操作:
o 你好你好.c
什么时候应该做:
g++ -o 你好你好.c
所以大概它的 g++ 字符串变量是空的。 g++ 存在并且在
PATH - “which g++”产生/scratchbox/compilers/bin/g++。
相同的源在scratchbox之外构建良好,所以不应该
scons 或代码库的问题。没有特别的环境
当它工作时,变量设置在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,所以我认为它应该能够找到它。
任何建议,将不胜感激!
谢谢,
射线
编辑:也许相关 - 它也找不到 pkg-config 除非我在 scons 文件中添加完整路径
最佳答案
scons 不传播 PATH 环境变量,因此测试例如'which g++' 没有多大帮助。
Either set the compilers directly, e.g.
env['CXX'] = '/scratchbox/compilers/bin/g++'
构建您自己的显式路径
path = ['/scratchbox/compilers/bin/','/bin', '/usr/bin', '/sbin','/usr/sbin']
env = Environment(ENV = {'PATH' : path})
或者使用 shell 中的 PATH 环境变量
import os
env = Environment(ENV = {'PATH' : os.environ['PATH']})
关于environment-variables - Scratchbox 中的 Scons : Can't find g++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1243439/