OCFPCSC? Singkat aja, OCF atau OpenCard Framework adalah sebuah framework di Java untuk mengakses smartcard. Sedangkan PC/SC adalah(dari wikipedia aja ya :P)..
> PC/SC is a specification for SmartCard integration in computing environment.
OCF ini bisa mengakses smartcard reader melalui 2 cara. Melalui PC/SC ini dan langsung via serial port. Kalau mau menggunakan PC/SC, perlu ada sebuah perantara yang bernama OCFPCSC ini. OCFPCSC ini diimplementasikan menjadi sebuah JNI (Java Native Interface) yang dapat diakses oleh Java dan OCFPCSC ini sendiri akan mengakses library PC/SC pada sistem.
Kompilasi OCFPCSC ini ternyata membutuhkan beberapa modifikasi pada `Makefile` sehingga akhirnya OCFPCSC ini dapat terkompilasi dengan benar dan terhubung dengan library PC/SC maupun Java.
Berikut ini adalah tahapan kompilasinya.
1. Download OCFPCSC dari
$ wget http://www.linuxnet.com/middleware/files/OCFPCSC1-0.0.1.tar.gz
2. Extract file tersebut
$ tar xzf OCFPCSC1-0.0.1.tar.gz
3. Masuk ke direktori `OCFPCSC1-0.0.1` dan ubah file `Makefile`
$ cd OCFPCSC1-0.0.1
$ vi Makefile
4. Ubah bagian atas file `Makefile` tersebut.
**SEBELUM**
CC = g++
LD = ld -export-dynamic
OBJS := $(patsubst %.cpp,%.o,$(wildcard *.cpp))
JDK_HOME = /home/corcoran/jdk117_v3
PCSC_HDRS = -I/usr/local/pcsc/include
PCSC_LIBS = -L/usr/local/pcsc/lib -lpcsclite
INCLUDE = -I$(JDK_HOME)/include -I$(JDK_HOME)/include/genunix $(PCSC_HDRS)
LIBNAME = libOCFPCSC1.so
**SESUDAH**
CC = g++
LD = ld -export-dynamic
OBJS := $(patsubst %.cpp,%.o,$(wildcard *.cpp))
JDK_HOME = /usr/lib/jvm/java-1.5.0-sun
PCSC_HDRS = -I/usr/include/PCSC
PCSC_LIBS = -L/usr/lib -lpcsclite -lstdc++ -L/usr/lib/gcc/i486-linux-gnu/4.1.2
INCLUDE = -I$(JDK_HOME)/include -I$(JDK_HOME)/include/linux $(PCSC_HDRS)
LIBNAME = libOCFPCSC1.so
Satu perubahan yang (sepertinya) tidak-semua-orang-tahu(termasuk saya) ada pada bagian `PCSC_LIBS`. Perlu ada penambahan opsi `-lstdc++ -L/usr/lib/gcc/i486-linux-gnu/4.1.2`. Saya mendapatkan informasi ini dari sebuah milis *lupa milisnya*
5. Compile
$ make
g++ -c fieldIO.cpp -I/usr/lib/jvm/java-1.5.0-sun/include …
g++ -c OCFPCSC1.cpp -I/usr/lib/jvm/java-1.5.0-sun/include …
g++ -c PcscContexts.cpp -I/usr/lib/jvm/java-1.5.0-sun/include …
g++ -c PcscExceptions.cpp -I/usr/lib/jvm/java-1.5.0-sun/include …
g++ -c Tracer.cpp -I/usr/lib/jvm/java-1.5.0-sun/include …
ld -export-dynamic -Bsymbolic -shared fieldIO.o OCFPCSC1.o PcscContexts.o …
6. Pindahkan JNI library ke direktori library milik Java
$ sudo cp libOCFPCSC1.so /usr/lib/jvm/java-1.5.0-sun/jre/lib/i386/