2017-02-10 9 views
0

Я пытаюсь использовать SCons построить простой привет мир проекта, явно устанавливая компоновщика флаги для чтения пользовательского компоновщика сценария:[Scons] [Linker] Невозможно найти компоновщик скрипт

env.Append(LINKFLAGS = [ 
    '-T script/linker_script.ld' 
    ]) 

Проблема в том, что, когда это выполняется, SCons ставит двойные кавычки «» вокруг -T опции, что приводит к чему-то вроде этого:

arm-none-eabi-ld -o bareMetalStartupScons.elf "-T script/linker_script.ld" src/main.o asm/startup.o 
arm-none-eabi-ld: cannot open linker script file script/linker_script.ld: No such file or directory 

сценарий есть, и если я просто удалить двойные кавычки и выполнить команду вручную, он завершается без ошибок, например

arm-none-eabi-ld -T script/linker_script.ld src/main.o asm/startup.o 

Любое решение по этой проблеме или любая идея, почему это происходит?

ответ

0

На самом деле я нашел обходное решение для этой проблемы, которое должно указывать путь к сценарию компоновщика без какого-либо пространства из -T, например.

env.Append(LINKFLAGS = [ 
    '-Tscript/linker_script.ld' 
    ]) 

В этом случае SCons не будет ставить двойные кавычки вокруг аргумента «в виде строки» при передаче его в исполняемый файл.

+0

Да, если в аргументе есть (белое) пространство, то SCons его процитирует. Вы также можете использовать LINKFLAGS = ['- T', 'script/linker_script.ld']. – bdbaddog