您的位置:首页 > 其它

scons实践笔记(1)--hello world

2013-03-28 20:11 183 查看
好久没记笔记了,又是虎头蛇尾,惭愧!scons是下一代构建工具,学习RT-Thread OS时接触到的,小试一下感觉还是挺好用的,便打算细细学习一番,以用在以后的开发中,工欲善其事,必先利其器嘛,不要急,慢慢来。

假设已安装Python环境(必须),scons官网下载安装包,解压,然后以命令行进入解压缩后的目录,执行python setup.py install即可,注意这里需要root权限,如果安装在其它目录则使用python setup.py install --prefix=$HOME这样的命令,当然$HOME可以换成其它路径,不过要注意权限。其它安装事项,见解压目录下的README.txt。

第一个例子,hello world的交叉编译:

> mkdir hello_world

> cd hello_world

> vim main.c

#include <stdio.h>
int main(void)
{
printf("hello,world!\n");
return 0;
}

> vim SConstruct

EXE_PATH = '/opt/arm-2007q1/bin'
PREFIX = 'arm-none-linux-gnueabi-'
ARMCC = PREFIX + 'gcc'
ARMAS = PREFIX + 'gcc'
ARMAR = PREFIX + 'ar'
ARMLINK = PREFIX + 'gcc'
ARMSIZE = PREFIX + 'size'
ARMOBJDUMP = PREFIX + 'objdump'
ARMOBJCPY = PREFIX + 'objcpy'

src = Glob('*.c')
env = Environment (AS = ARMAS,
CC = ARMCC,
AR = ARMAR,
LINK = ARMLINK)

env.PrependENVPath ('PATH',EXE_PATH)

env.Program(source = src, target = 'hello_world')

> ls
main.c  SConstruct

> scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
arm-none-linux-gnueabi-gcc -o main.o -c main.c
arm-none-linux-gnueabi-gcc -o hello_world main.o
scons: done building targets.

> ls
main.c  main.o  hello_world  SConstruct


src = Glob("*.c")是参与编译的文件的定义,是当前目录下的所有以.c结尾的源文件,在这里只有一个main.c;再接下来的两句env = Environment(...)和env.PreendENVPath(...)指定所使用的编译器和具体路径(这里稍微复杂),若缺省则默认使用GCC;最后一句,指定参与编译文件和最终生成的可执行文件的名称(即hello_world)。

将可执行文件hello_world以某种方式传输到arm平台下即可执行

> scons -c
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Cleaning targets ...
Removed main.o
Removed hello_world
scons: done cleaning targets.

> ls
main.c  SConstruct


scon 相当于make,而scons -c 相当于 make clean

几点说明:

(1)默认的编译器是gcc,如果想要用到其它交叉编译器,则需要额外设置一些东西了。

(2)觉得scons 与 make最大 的不同,在于不需要指定依赖关系,也不需要指定每个命令的具体动作,这些完全是由scons自动完成的,比如:不必像makefile那样需要指定make和make clean时要执行的具体动作。这习惯了make的我对这有点不适应,总觉得有点不太放心。好在可以手动干预这个过程,以达到我们想要的目的。

(3)scons 是基于python开发,在使用scons的同时可以使python脚本,这就允许自己借助python的力量写出各种各样的工具来满足各种需求,这才是真正比make强大的地方。

(4)现在才发现,最好的scons学习资料就是官网的scons 用户手册,不要再到处找资料了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: