2011年12月31日 星期六

FFI(Foreign Function Interface)-擴展Smalltalk的特異功能

如果想讓Smalltalk能使用我們電腦平台的特殊硬體設備或是運算能力,那麼可以透過FFI,存取作業系統的library或是自行編寫shared library所提供的接口

例如,可以添購產生真實亂數量子物理設備或是為了加入全球意識計畫 (The Global Consciousness Project )而安裝REG(random event generators)設備,這時我們只要為Smalltalk/Squeak/Pharo加入一些程式碼,就能讓你的Smalltalk達成量子跳躍(Quantum leap)

關於FFI的詳細用法,請參考How to Use FFI


底下是Jimmy's papa的實驗過程
首先Pharo先載入FFI package
寄件者 scratchlab01
接著編寫shared library的c原始碼
junkDNA.c
#include <stdio.h>

char* quantumCommunication() {
    return "hello parallel worlds!\n";
}

junkDNA.h
char* quantumCommunication();

編譯,產生junkDNA.o
gcc -fPIC -Wall -c junkDNA.c

編譯成libjunkDNA.so(必須是lib開頭),加入junkDNA.o
gcc -shared -o libjunkDNA.so junkDNA.o

直接copy檔案到預設Pharo的/Contents/Linux/目錄下
cp libjunkDNA.so /home/<your-dir>/Pharo-1.3-OneClick.app/Contents/Linux/ 

寄件者 scratchlab01

耶!成功了,我的Pharo擁有新的特異功能囉!!!
寄件者 scratchlab01

沒有留言:

張貼留言