Булочки в Scratchbox: не могу найти g++
Я использую sbox с базой кода на основе Make без проблем. Теперь я использую основанную на scons кодовую базу и получаю некоторые странные проблемы.
Кажется, что в scratchbox, scons не может найти g ++. Например, он пытается выполнить такие вещи, как:
о привет привет
Когда это должно быть сделано:
g ++ -o привет hello.c
Так что, предположительно, строковая переменная g ++ пуста. g++ присутствует и в PATH - "который g++" выдает /scratchbox/compilers/bin/g++.
Тот же самый источник прекрасно работает за пределами блокнота, так что это не должно быть проблемой с scons или кодовой базой. Нет специальных переменных окружения, установленных за пределами блокнота, когда он работает.
Если я символически связываю / 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
1 ответ
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})
Или используйте переменную PATH env из вашей оболочки
import os
env = Environment(ENV = {'PATH' : os.environ['PATH']})