4

我一直在使用 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,所以我认为它应该能够找到它。

任何建议,将不胜感激!谢谢,雷

编辑:也许相关-除非我在 scons 文件中添加完整路径,否则它也找不到 pkg-config

4

1 回答 1

8

scons 不会传播 PATH 环境变量,因此测试例如“which 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})

或者使用 shell 中的 PATH 环境变量

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