2017-02-10 40 views
0

我試圖使用scons的構建一個簡單的Hello World項目,明確設置連接標誌讀取自定義鏈接腳本:[使用SCons] [鏈接]無法找到鏈接腳本

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