这两天花了点时间琢磨下Alchemy技术,安装比较烦琐,把自己安装成功的教程文章转出来,做个记录方便日后需要.
Alchemy 是adobe 推出的把C++代码编译成as3 字节码的开源项目,这对于开源爱好者和RIA开发者绝对是一个好消息,以后c++ 的开源工程都可以编译成as库来供RIA开发者使用了。不过现在Alchemy 发布的还是release beta 版,看网上评论对c++ 的语法好像有一些限制,具体还没有研究,目前只是才安装好Alchemy 。以后研究好了再和大家分享。
Alchemy 在windows下的安装是一件很麻烦的事情,需要在cygwin下安装。
在adobe 的网站上有一篇安装指南:
http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Getting_Started#Windows
个人觉得对cygwin很熟悉的人才能一次安装成功,对于不熟悉cygwin的人估计要废半天劲,因此我把我的安装过程记录下来,与大家分享。
首先我的机器是windows xp sp2, cygwin ,和flex sdk 安装在c盘根目录下面。
要安装Alchemy ,首先需要安装cygwin 和flex sdk 3.2.
cygwin的下载地址:http://www.cygwin.com
安装cygwin的时候一定要选择
2 到 Select Package这时,需要选择以下3个东西
1 到 Archive 下面去选择安装 zip 包
2 到 Devel 下面去选择安装 gcc-g++ 包
3 到 Perl 目录,选择完全安装 (Install)
flex sdk 的下载地址为:http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3
注意 要下载Adobe Flex SDK,这个sdk比较大,有100多M。
Alchemy 的下载地址为:
http://labs.adobe.com/technologies/alchemy/
上面3个文件下载完后,我们就可以安装的。
第一步:安装cygwin,cygwin默认安装在c盘根目录下。
第二步:安装java,因为我的机器已经安装了java,所以略过此步。
第三步:解压Adobe Flex SDK到c盘根目录,重命名为flex,注意flex目录下面为bin 等目录。
第四步:解压Alchemy 到C盘根目录,重命名为Alchemy ,注意Alchemy目录下面直接为bin等目录。
第五步:修改C:/cygwin/etc目录下的profile文件
PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/cygdrive/c/flex/bin:$PATH
将flex sdk 的bin目录加入到cygwin的path中。红色部分为新添加的。
第六步,打开cygwin,切换到Alchemy 目录,Alchemy 目录路径为/cygdriver/c/alchemy。在cygwin中cd 是进入目录,cd ..是返回到上级目录,关于bash的详细命令请用百度搜索一下。
第七步:执行 ./config,并根据echo出来的提示,执行source /cygdrive/c/alchemy/alchemy-setup
第八步:关闭cygwin,编辑C:/alchemy目录下的alchemy-setup文件(这个文件是执行./config命令新生成的),将#export ADL=/path/to/fyou/bin/adl (or adl.exe)一句修改成export ADL=/cygdrive/c/flex/bin/adl.exe,注意去掉#注释符。
第九步:编辑C:/cygwin/etc目录下bash.bashrc文件,在文件最后加入下面三行
source /cygdrive/c/alchemy/alchemy-setup
PATH=$ALCHEMY_HOME/achacks:/cygdrive/c/flex/bin:$PATH
export PATH
第十步: 打开C:/cygwin,切换到/cygdriver/c/alchemy/bin目录,执行下面的命令:
ln -s llvm-stub llvm-stub.exe
第十一步: 切换到/cygdriver/c/alchemy/samples/stringecho目录:
执行which gcc
然后执行:
alc-on;gcc stringecho.c -O3 -Wall -swc -o stringecho.swc
一定要按照上面的方式执行即alc-on命令和gcc stringecho.c -O3 -Wall -swc -o stringecho.swc命令一起执行,否则会报编译错误,不能正确的编译。
在编译的过程中你会看到如下提示:
$ gcc stringecho.c -O3 -Wall -swc -o stringecho.swc WARNING: While resolving call to function 'main' arguments were dropped! 2544.achacks.swf, 363806 bytes written frame. rate: 60 frame. count: 1 69 : 4 72 : 363736 76 : 33 1 : 0 0 : 0 frame. rate: 24 frame. count: 1 69 : 4 77 : 506 64 : 31 63 : 16 65 : 4 9 : 3 41 : 26 82 : 471 1 : 0 0 : 0 adding: catalog.xml (deflated 75%) adding: library.swf (deflated 61%)
至此,一个c文件就编译成了一个swc库,我们在as代码中就可以使用这个swc了。
详细的配置过程见:http://labs.adobe.com/technologies/alchemy/
使用Cygwin配置的时候碰到了几处麻烦。首先是路径设置问题,我直接把flex目录下的bin目录copy到了c盘。
其次是编译时报错:
[Compiler] Error #1063: Unable to open file: /cygdrive/c/Users/sascha/Applications/Alchemy/flashlibs/global.abc.
[Compiler] Error #1063: Unable to open file: /cygdrive/c/Users/sascha/Applications/Alchemy/flashlibs/playerglobal.abc.
需要修改alchemy目录里 hacks.pl 文件:
把if ( `uname` = ~ / CYGWIN /) 改为if ( `/ bin / uname` = ~ / CYGWIN /
要注意的是,不要把alchemy安装到cygwin的目录下。