首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用scon进行交叉生成

如何使用scon进行交叉生成
EN

Stack Overflow用户
提问于 2015-07-29 17:57:56
回答 1查看 1.2K关注 0票数 4

我试图创建最简单的可想象的SConstruct文件交叉编译一个程序。我尝试了不同的设置,最新的SConstruct文件如下:

代码语言:javascript
复制
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()的输出显示如下:

代码语言:javascript
复制
{ '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()输出中没有看到任何意外(特别是没有标准的系统路径),并且认为如果scon找不到env_options中列出的工具,我至少会收到一条错误消息。相反,scon使用默认工具并为我的主机系统构建程序。我考虑过发布在here(1)here(2)上的答案--到目前为止都没有成功。

  • 我错过了什么?
  • 为什么scon仍然能够找到并使用默认工具(我明确声明使用二进制arm-linux-gnueabihf-gcc-4.8.3,并且在ENV中没有像/bin//usr/bin这样的系统路径)?
  • 如何强制scon只显式地使用我正在传递的路径/工具(从头构建一个环境)?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 18:13:00

代码语言:javascript
复制
p = Program( "prog", [ "prog.c", "mylib.c" ], CFLAGS=[ '-Iinclude', '-Werror', '-Wall', '-Wextra' ] )

应该是

代码语言:javascript
复制
p = env.Program( "prog", [ "prog.c", "mylib.c" ], CFLAGS=[ '-Iinclude', '-Werror', '-Wall', '-Wextra' ] )

使用程序代替env.Program使用没有CC等设置为任何非默认值的默认环境。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31707803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档