Adobe Alchemy 基於LLVM 技術運行 |
現在為大家說明如何在MAC OS X 環境中, 運用Adobe Alchemy 編譯C/C++ 語言, 包裝給ActionScript 調用.
必須有以下的準備:
- 下載Alchemy Toolkit Package
- 安裝Xcode 2.4+
- 安裝Flash Builder
安裝步聚:
- 把Flash Builder 內的SDK bin 目錄設定為MAC OS X 的PATH 環境變數(PATH Environment Variables)
- 打開.bash_profile 檔案, 在Terminal 輸入:
touch ~/.bash_profile; open ~/.bash_profile
- 在TextEdit 中, 把空白的.bash_profile 檔案更改成:
(請把Adobe Flash Builder 4.6/4.6.0_AIR3.4 更改成正確路徑)
PATH="$PATH:/Applications/Adobe Flash Builder 4.6/sdks/4.6.0_AIR3.4/bin"
export PATH
- 在TextEdit 中把.bash_profile 檔案儲存(Command+S)
- 然後在Terminal 輸入:
source ~/.bash_profile
- 關閉Terminal (Command+Q) - 測試是否設定正確, 重新開啟Terminal, 然後輸入:
adt -version
若步聚正確, 會顯示SDK 版本代號"3.4.0.3010" - 把下載的Alchemy Toolkit Package 解壓存放於/Library/alchemy/
- 把游漂移至alchemy 目錄內, 在Terminal 輸入:
cd /Library/alchemy - 執行alchemy 目錄內的config, 在Terminal 輸入:
./config - 在PATH 環境變數加入alchemy 相關資料:
- 再次打開.bash_profile 檔案, 在Terminal 輸入:
touch ~/.bash_profile; open ~/.bash_profile
- 在TextEdit 中, 把.bash_profile 檔案更改成:
source "/Library/alchemy/alchemy-setup"
PATH="$PATH:/Applications/Adobe Flash Builder 4.6/sdks/4.6.0_AIR3.4/bin"
PATH="$PATH:/Library/alchemy/achacks"
export PATH
- 在TextEdit 中把.bash_profile 檔案儲存(Command+S)
- 然後在Terminal 輸入:
source ~/.bash_profile
- 關閉Terminal (Command+Q) - 重新開啟Terminal, 分別輸入:
alc-on
和
gcc
以上兩個指令, 不會出現"command not found" 錯誤訊息, 代表設定完成
範例編譯:
- 把游漂移至alchemy/samples/stringecho/ 目錄內, 在Terminal 輸入:
cd /Library/alchemy/samples/stringecho/ - 在Terminal 輸入:
alc-on; which gcc
以上指令會顯示出gcc 路徑"/Library/alchemy/achacks/gcc" - 把c 語言編譯成swc 元件, 在Terminal 輸入:
gcc stringecho.c -O3 -Wall -swc -o stringecho.swc - 若元件正確產生, 在Terminal 會顯示以下訊息: (若發生錯誤, 請看編譯錯誤修正)
1911.achacks.swf, 259831 bytes written
frame rate: 60
frame count: 1
69 : 4
72 : 259761
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 70%)
編譯錯誤修正:
修正一
- 若在編譯時, 出現以下錯誤:
Array @ARGV missing the @ in argument 1 of shift() at /Library/alchemy/achacks/gcc line 218.
我們需以在/Library/alchemy/achacks 的gcc 檔案的218 行, 加入"@"字元, 請更改成:
{ $path = shift(@ARGV) }
修正二
- 若在編譯時, 出現以下錯誤:
dyld: Library not loaded: /usr/lib/libltdl.3.dylib
Referenced from: /Library/alchemy/bin/llvm-gcc
Reason: image not found
我們需要把游漂移至/usr/lib/ 目錄內, 在Terminal 輸入:
cd /usr/lib/
然後再在Terminal 輸入:
sudo ln -s libltdl.7.dylib libltdl.3.dylib
使用swc 元件:
我們透過Adobe Alchermy 成功產生swc 元件, 在Flash Builder 設定swc 路徑後, 便可以使用:
package { import flash.display.Sprite; import cmodule.stringecho.CLibInit; public class stringecho_mobile extends Sprite { public function stringecho_mobile() { var loader:CLibInit = new CLibInit; var lib:Object = loader.init(); trace(lib.echo("foo")); } } }
大家若在Windows 環境下安裝Alchemy, 請參考這個連結, 安裝原理與MAC 很相近.
Alchermy 安裝參考:
http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Getting_Started
更改PATH 環境變數參考:
http://hathaway.cc/2008/06/how-to-edit-your-path-environment-variables-on-mac-os-x/
編譯錯誤修正參考:
http://forums.adobe.com/message/3892045