守望者--AIR技术交流

标题: Crossbridge 編譯後運行 Sample 1 HelloWorld [打印本页]

作者: 破晓    时间: 2014-12-31 21:15
标题: Crossbridge 編譯後運行 Sample 1 HelloWorld
Crossbridge = FlasCC = Alchemy

接續上帖初探 Alchemy 之下載篇下載完Crossbridge後。還要記得安裝Java 64位元(用32位元也可以,但是因為記憶體的問題,所以編譯時要多輸入-jvmopt=-Xmx1G和下載Flex_sdk_4.6。這邊假定已經安裝好Java 32位元,且有D:/Crossbridge_1.0.1和D:/flex_sdk_4.6這兩個資料夾。


[attach]114[/attach]

[attach]115[/attach]

到D:/Crossbridge_1.0.1,雙擊run.bat,出現下圖,即表示正確


[attach]116[/attach]

~~~ FlasCC SDK Cygwin Environment ~~~

To compile the samples type the following command <replace the FLEX variable with the real path to your flex sdk>:
make FLASCC="/cygdrive/d/CrossBridge_1.0.1/sdk" FLEX="/path/to/flexsdk"

niauwu /cydrive/d/Crossbridge_1.0.1/samples
$

這段文字的意思是,要編譯範例,請輸入以下指令 <記得替換FLEX的路徑變數為實際的flex sdk路徑>:
目前所在的資料夾是d/Crossbridge_1.0.1/samples。
在$輸入cd 01_HelloWorld
就會跳到d/Crossbridge_1.0.1/samples/01_HelloWorld資料夾


[attach]117[/attach]

在$輸入make FLASCC="/cygdrive/d/Crossbridge_1.0.1/sdk" FLEX="/cygdrive/d/flex_sdk_4.6"
輸入時要一字不差,不過[size=14.3999996185303px]"可以不用打,尤其FLASCC和FLEX要注意用大寫。不然會出現以下提示,說無法定位FLASCC sdk目錄,請調用make "make FLASCC=/path/to/FLASCC/sdk ...",原來是cydrive少打了個g,cygdrive,而且sdk/應為sdk",還有4.6應為4.6"


[attach]118[/attach]

是否覺得這樣太麻煩了,而且還會不小心打錯,其實只要到D:\Crossbridge_1.0.1\samples開啟Makefile.common把FLASCC:=X改成FLASCC:=/cygdrive/d/Crossbridge_1.0.1/sdk,FLEX:=X改成FLEX:=/cygdrive/d/flex_sdk_4.6


[attach]119[/attach]

即可直接輸入make編譯


[attach]120[/attach]

輸入make後,出現以下新的錯誤


[attach]121[/attach]

-------- Sample 1 --------
First let's compile it as a projector: 首先讓我們編譯其為專案器:
"/cygdrive/d/Crossbridge_1.0.1/sdk/usr/bin/gcc" -Werror -Wno-write-strings -Wno-trigraphs hello.c -o hello.exe
cc1: error in backend 後端錯誤: Fail to run 無法運行 /cygdrive/d/Crossbridge_1.0.1/sdk/usr/bin/../../usr/bin/llc with arg: -jvm=C:\Windows\system32\java -filetype=obj D:\Crossbridge_1.0.1\cygwin\tmp\cc2EjQzm.o -o D:\Crossbridge_1.0.1\cygwin\tmp\cc2EjQzm.o -jvmopt -Xmx1500M
Error:
LLVM ERROR: Error: Unable to launch the Java Virthal Machine. 錯誤: 啟動 Java 虛擬機
This usually means you have a 32bit JVM installed or have set your Java heap size too large.
這通常表示你安裝了 32 位元的 JVM 或者設定的 Java 堆太大了。
Try lowering the Java heap size by passing "-jvmopt=-Xmx1G" to gcc/g++.
試試將低 Java 堆大小,藉由傳遞 "-jvmopt=-Xmx1G" 到 gcc/g++。
Stack dump 堆棧傾印 :
0.         Program arguments: D:\Crossbridge_1.0.1\sdk\usr\btn\llc.exe -jvm=C:\Windows\system32\java -filetype=obj D:\Crossbrige_1.0.1\cygwin\tmp\cc2EjQzm.o -o D:\Crossbridge_1.0.1\cygwin\tmp\cc2EjQzm.o -jvmopt -Xmx1500M
1.         Running pass 'Function Pass Manager' on module 'D:\Crossbridge_1.0.1\cygwin\tmp\cc2EjQzm.o' .

Makefile:2: recipe for target 'T01' failed 給目標'T01'的命令失敗
make: *** [T01] Error 1 編譯時有1個錯誤

會出現以上錯誤是因為裝了 32 位元的 Java,解決方法是裝 64 位元的 Java,因為範例中有些需要用大的記憶體,不過如果不裝 64 位元的 Java 也可以,只要傳遞 -jvmopt=-Xmx1G,設定記憶體大小1G即可正常編譯。

用notepad++開啟位於D:\Crossbridge_1.0.1\samples\01_HelloWorld的Makefile
在第4行和第7行後面輸入 -jvmopt=-Xmx1G


[attach]122[/attach]

輸入make 即可編譯成功,依據電腦的效能,可能要等數秒到數分鐘,當然 sample 1 比較簡單,所以一下就好了。


[attach]123[/attach]

到D:\Crossbridge_1.0.1\samples\01_HelloWorld執行hello.swf


[attach]124[/attach]

如果很好奇的運行hello.exe,會發現hello.exe - 系統錯誤,無法啟動程式,因為您的電腦遺失 cygwin1.dll。請嘗試重新安裝以修正這個問題。


[attach]125[/attach]

只要把hello.exe放到D:\Crossbridge_1.0.1\cygwin\bin,就可以運行正常hello.exe,但是會一閃而過。(拍這張一閃而過得圖好辛苦阿)


[attach]126[/attach]

或者也可以直接輸入./Hello.exe


[attach]127[/attach]

仔細看一下hello.c的內容,代碼很簡單,就是在main函數用printf方法顯示Hello World,剩下的就是一些license
  1. #include <stdio.h>

  2. int main(int argc, char **argv)
  3. {
  4.     printf("Hello World\n");
  5. }
复制代码
參考資料
ALCHEMY 2 (FLASCC)新手入门
http://www.qkeye.com/thread-163331-1-1.html

FlasCC安装和配置指南
http://bbs.9ria.com/thread-166310-1-1.html

FlasCC Tutorial #1: Getting Started with FlasCC
http://flascc.blogspot.tw/2013/0 ... g-started-with.html


作者: 破晓    时间: 2015-1-4 17:53
本系列目录:

初探 Alchemy 之下載篇


Crossbridge 編譯後運行 Sample 1 HelloWorld


Crossbridge sample 02 Interop



Crossbridge sample 03 Drawing






欢迎光临 守望者--AIR技术交流 (http://www.airmyth.com/)