NodeJS编译

NodeJS下载:http://nodejs.org/


说明:NodeJS需要openssl-devel库的支持。如果系统中没有安装此库,configure的时候会提示。Ubuntu上安装此库的方式是:sudoapt-get install libssl-dev


环境:Ubuntu LTS 10.04, 64bit


GCC版本:

#gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


#


编译:

#./configure --prefix=./prefix/
#make
#make install

#./node -v

其中prefix为自己建立的一个文件夹,保存编译结果。



说明:下面的内容很乱,因为说不清楚,只是为了记录一些东西,如有人阅读此文,请跳过这段内容!如果有编译的问题,可以直接探讨!

构建过程:

Nodejs的build,不是使用的autoconf/automake的方式,主要是利用了scons工具,这是一个基于Python的构建系统。下面是Nodejs的configure内容:

#! /bin/sh

# v8 doesn't like ccache
if [ ! -z "`echo $CC | grep ccache`" ]; then
  echo "Error: V8 doesn't like ccache. Please set your CC env var to 'gcc'"
  echo "  (ba)sh: export CC=gcc"
  exit 1
fi

CUR_DIR=$PWD

#possible relative path
WORKINGDIR=`dirname $0`
cd "$WORKINGDIR"
#abs path
WORKINGDIR=`pwd`
cd "$CUR_DIR"

"${WORKINGDIR}/tools/waf-light" --jobs=1 configure $*

exit $?
很显然,它调用了tools/waf-light文件,打开可以知道这是一个python脚本。

同样打开makefile文件,里面也会invoke其他的python脚本去执行build过程。下面是大概的一个构建过程中的一些脚本的调用过程(PS:只是大概分析,详细内容可以去专门学习这个构建系统的使用):

(1)makefile调用tools/waf-light

从makefile第一行就可以看到了。另外,configure的脚本也是调用这个waf-light的。

(2)waf-light和Scripting.py

if __name__ == '__main__':
	import Scripting
	Scripting.prepare(t, cwd, VERSION, wafdir)
其中的主要部分就是这里,调用了Scripting模块,位于tools/wafadmin/Scripting.py,其prepare方法大概就是一些基本的配置啊检查啊什么的,会调用prepare_impl,然后调用main,主要有以下内容:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值