Булочки в Scratchbox: не могу найти g ++ - PullRequest
4 голосов
/ 07 августа 2009

Я без проблем использую sbox с базой кода на основе Make. Сейчас Я использую основанную на scons кодовую базу и получаю некоторые странные проблемы.

Похоже, что внутри скретчбокса сыновья не могут найти g ++. Например, это пытается выполнить такие вещи, как:

o hello hello.c

Когда это должно быть сделано:

g ++ -o привет hello.c

Так что, вероятно, ее строковая переменная g ++ пуста. g ++ присутствует и в ПУТЬ - "который г ++" выдает /scratchbox/compilers/bin/g++.

Один и тот же источник прекрасно работает за пределами блокнота, поэтому его не должно быть проблема с scons или кодовой базой. Там нет особой среды переменные, установленные вне блокнота, когда он работает.

Если я символически связываю / usr / bin / g ++ с / scratchbox / compilers / bin / g ++, это идет немного дальше (производит правильно выглядящие команды g ++), но затем при их выполнении выдает:

sb_gcc_wrapper (g ++): / Scratchbox / Составители / рычажный линукс-cs2007q3-51sb3 / бен / Sbox-рычажный ни-линукс-gnueabi-г ++: Нет такого файла или каталога

Файл в списке присутствует.

PATH содержит / scratchbox / compilers / bin, SBOX_REDIRECT_FROM_DIRS содержит / usr / bin, а SBOX_REDIRECT_TO_DIRS содержит / scratchbox / compilers / bin, поэтому я думаю, что должен иметь возможность найти его.

Любые предложения будут оценены! Спасибо, Ray

Редактировать: Возможно, связано - он также не может найти pkg-config, если я не добавлю полный путь в файле scons

1 Ответ

7 голосов
/ 07 августа 2009

scons не распространяет переменную среды PATH, поэтому тестирование, например, «который 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})

Или используйте переменную PATH env из вашей оболочки

import os
env = Environment(ENV = {'PATH' : os.environ['PATH']})
...