Булочки в 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']})
Другие вопросы по тегам