linux内核使用scons构建,如何使用scons进行交叉构建

我正在尝试创建最简单的可想象的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 /或/usr/bin这样的系统路径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,c-3,linux,scons

来源: https://codeday.me/bug/20190702/1358754.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值