iphone-dev

หลังจากได้ iphone มาเมื่อสัปดาห์ที่แล้ว ก็เริ่มเล่นจนเครื่องผมเอ๋อไปหลายรอบเลย ใครมาเห็น iphone ผมตอนนี้คงคิดว่ามันผ่านการใช้งานมาหลายเดือนแล้วแน่ๆ ฮะๆๆ เอาเป็นว่า หลังจากใช้มาได้หนึ่งสัปดาห์ตอนนี้ก็คันไม้คันมืออยากเขียนเองบ้างแล้วหละ แต่เนื่องจากเครื่องมือสำหรับพัฒนาโปรแกรมลง iphone นั้นในเว็บ apple มีไว้แต่สำหรับใช้บน แมค ผ่าน xcode ซึ่งเครื่องประจำของผมดันเป็น dell ลง linux ซะนี่ จะให้ไปซื้อ mac book มาใช้ก็ไช่ที่ ดังนั้นก็เลยหาวิธีพัฒนาโปรแกรมบน linux ซะจะดีกว่า

สำหรับตัวช่วยของผมตอนนี้ก็คือเว็บนี้ครับ iphone-dev เครื่องมือที่เรียกกันจริงๆ ก็คือ toolchain (ทำไมเรียกงี้ก็ไม่รู้เหมือนกัน) ขั้นตอนนั้นก็ไม่มีอะไรซับซ้อน แต่ไอ้ที่ซับซ้อนคือไฟล์ที่ต้องใช้มากกว่า เอาหละมาดูขั้นตอนกัน(จริงๆ ก็แปลว่าจาก วิกินั้นนั่นแหละ)

ตอนแรกก็ติด bison กับ flex ก่อน(ไม่ใช่ adobe flex หรอกนะ)

$sudo aptitude install bison flex

พอติดเสร็จก็จะได้อะไรประมาณนี้

llun@pluto:~$ bison –version
bison (GNU Bison) 2.3
Written by Robert Corbett and Richard Stallman.

Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
llun@pluto:~$ flex –version
flex 2.5.34

ถ้าดูตามวิกิรุ่น bison กับ flex จะต่างกันนิดหน่อย(หรอ)

จากนั้นก็เอาโค้ดออกมาจาก svn และสั่ง config เตรียม Makefile สำหรับ llvm ซะ*

$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn -r 42498
$ pushd llvm-svn
$ ./configure –enable-optimized
$ make ENABLE_OPTIMIZED=1
$ sudo make install
$ LLVMOBJDIR=`pwd`
$ popd

*ถ้าหากยังไม่ได้ลง svn กับ build-essential ก็ลงก่อนซะด้วยคำสั่ง

$sudo aptitude install subversion build-essential

ตามด้วยเอา iphone-dev ออกมาก

$ svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev
$ pushd iphone-dev

สร้างแฟ้มที่ไว้เก็บ toolchain

$ sudo mkdir /usr/local/arm-apple-darwin

จากนั้นก็สร้าง odcctools

$ mkdir -p build/odcctools
$ pushd build/odcctools
$ ../../odcctools/configure –target=arm-apple-darwin –disable-ld64
$ make
$ sudo make install
$ popd

จากนั้นก็เอา root filesystem ของ iphone มา ในวิกิบอกว่าให้ใช้เครื่องมือขยายไฟล์ firmware ของ iphone แต่เนื่องจากผมขี้เกียจหาก็ใช้วิธี copy จาก iphone ผมละกัน ;p

$scp root@iphone:/ /home/user/workspace/iphone-filesystem
$export HEAVENLY=/home/user/workspace/iphone-filesystem

ได้ iphone fs ออกมาแล้วต่อไปก็เอา osx sdk ออกมาจาก xcode สำหรับผมนั้นเล่นวิธีง่ายๆ คือใช้เครื่อง แมคขยายให้ หมดเลย จากนั้นค่อย copy เอามาใส่เครื่อง linux ไว้เดี๊ยวผมทำเป็นไฟล์ zip ไว้ให้ดาวโหลดอีกทีละกันครับ พอได้ osx sdk แล้วก็เอาไปวางซักที่หลังจากนั้นก็ติดตั้ง iphone header

$ pushd include
$ ./configure –with-macosx-sdk=/home/user/workspace/osx.sdk
$ sudo bash install-headers.sh
$ popd

จากนั้นก็ติดตั้ง csu ในวิกิจะบอกว่า อย่าสร้างมันตรงๆ เอา binary ที่ให้มาไปใช้ซะดีๆ ยังไงก็ไม่มีทางเลือก ก็ทำตามมันว่าละกัน

$ mkdir -p build/csu
$ pushd build/csu
$ ../../csu/configure –host=arm-apple-darwin
$ sudo make install
$ popd

สุดท้ายๆ ก็สั่งสร้าง llvm-gcc ซะ

$ mkdir -p build/llvm-gcc-4.0-iphone
$ pushd build/llvm-gcc-4.0-iphone
$ ../../llvm-gcc-4.0-iphone/configure –enable-llvm=`llvm-config –obj-root` \
–enable-languages=c,c++,objc,obj-c++ –target=arm-apple-darwin –enable-sjlj-exceptions \
–with-heavenly=$HEAVENLY –with-as=/usr/local/bin/arm-apple-darwin-as \
–with-ld=/usr/local/bin/arm-apple-darwin-ld –enable-wchar_t=no
$ make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn
$ sudo make install
$ popd
$ popd

เห็น @pruet บอกว่าทำขั้นสุดท้ายไม่ผ่านแต่ผมไม่เจอ error ใดๆ เลยแฮะ สงสัยจะแก้กันแล้ว หลังจากติดตั้งเสร็จก็จะได้คำสั่ง arm-apple-darwin-… ทั้งหลายมา ตอนนี้ผมก็ใช้เป็นอยู่ตัวเดียวแหละคือ arm-apple-darwin-gcc ไว้สำหรับคอมไพล์แล้วเอาไปลงที่ iphone ซะ ก็ลองเล่นดูนิดหน่อยวันนี้ด้วยโปรแกรม hello, world (ของสำเร็จรูป) ก็รันได้ ดูดีใน command line อาทิตย์นี้ก็ขอลองเล่นแค่นี้ก่อนละกัน รู้สึกยังมีงานอื่นอีกเพียบเลย แล้วอาทิตย์หน้าว่างๆ แล้วจะมาเล่น แล้วเล่าใหม่อีกทีครับ

ปอลอ. ECMAScript3 ดองไว้นานและ พรุ่งนี้หละๆ พร้อมกับ Actionscript3 เลยละกัน จริงๆ @pruet ชวนไปเขียนในบล๊อก air นะ แต่เนื้อหาผมส่วนใหญ่จะเป็นพวก programming นี่สิ – -”

About llun

Just a programmer

, ,