gpt4 book ai didi

python - 如何使用scons进行交叉构建

转载 作者:IT王子 更新时间:2023-10-29 00:34:17 24 4
gpt4 key购买 nike

我正在尝试创建最简单的 SConstruct 文件来交叉编译程序。我尝试了不同的设置,最新的 SConstruct 文件在这里:

env_options = {
"CC" : "arm-linux-gnueabihf-gcc",
"CXX" : "arm-linux-gnueabihf-g++",
"LD" : "arm-linux-gnueabihf-ld",
"AR" : "arm-linux-gnueabihf-ar",
"STRIP" : "arm-linux-gnueabihf-strip"
}
env = Environment(**env_options)
path = ['/path/to/toolchain/bin/']
env.Append( ENV = {'PATH' : path})

p = Program( "prog", [ "prog.c", "mylib.c" ], CFLAGS=[ '-Iinclude', '-Werror', '-Wall', '-Wextra' ] )

env.Dump() 的输出显示例如:

{ 'AR': 'arm-linux-gnueabihf-ar',
'CC': 'arm-linux-gnueabihf-gcc',
'CXX': 'arm-linux-gnueabihf-g++',
'ENV': { 'PATH': [ '/path/to/toolchain/bin/']},
'LD': 'arm-linux-gnueabihf-ld',
'TOOLS': [ 'default',
'gnulink',
'gcc',
'g++',
'gas',
'ar',
'filesystem',
'm4',
'zip']
}

我在 env.Dump() 输出中没有看到任何意外(尤其是没有标准的系统路径),并认为万一 scons 找不到 env_options 中列出的工具 我至少会收到一条错误消息。相反,scons 使用默认工具并为我的主机系统构建程序。我考虑了发布的答案 here(1)here(2) - 到目前为止没有成功。

  • 我错过了什么?
  • scons 怎么可能仍然找到并使用默认工具(我明确声明使用二进制 arm-linux-gnueabihf-gcc-4.8.3 并且没有像 /bin/ or /usr/bin set in ENV )?
  • 如何强制 scons 明确地只使用我传递的路径/工具(从头开始构建环境)?

最佳答案

p = Program( "prog", [ "prog.c", "mylib.c" ], CFLAGS=[ '-Iinclude', '-Werror', '-Wall', '-Wextra' ] )

应该是

p = env.Program( "prog", [ "prog.c", "mylib.c" ], CFLAGS=[ '-Iinclude', '-Werror', '-Wall', '-Wextra' ] )

使用 Program 而不是 env。Program 使用没有将 CC 等设置为任何非默认值的默认环境。

关于python - 如何使用scons进行交叉构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31707803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com