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

, ,

  • den

    ผมติดตั้ง xcode 3.0 ไปแล้วคับ แต่ว่ามันสร้าง application สำหรับ iphone firewire 2.0
    ซึ่งผมใช้เป็น ipod touch firewire 1.1.5
    ผมได้ลองเอา application ที่สร้างจาก xcode 3.0 ไปลองรันบน ipod touch แล้วมันรันไม่ได้
    ผมเลยลองดาวน์โหลด application ที่สร้างจาก toolchain มารันแล้วมันรันได้คับ
    ที่ผมต้องการทำคือลง toolchain ได้แล้วจึงจะเอาไปใช้ร่วมกับ xcode , xcode template

  • http://llun.info llun

    @den อืมผมว่าดาวโหลด X-Code มาติดเลยจะง่ายกว่านะ เพราะมันมี llvm ให้แล้วด้วย ไม่จำเป็นต้องมา compile เอง (บน leopard ผมยังไม่เคย compile llvm ว่างั้นดีกว่า ^^!)

  • den

    ควรจะวาง directory llvm-svn ไว้ที่ไหนดีครับ เพราะตอนนี้ผมวางไว้ที่ /usr/local/bin/
    พอถึงขั้นตอน
    $ ../../odcctools/configure –target=arm-apple-darwin –disable-ld64

    $ make
    ผม make มันมี error :redefinition of ‘_OSSwapInt16′
    make[1]:***[execute.o] Error 1
    make[2]:***[libstruff] Error 2

    ควรจะแก้ยังไงครับ ผมใช้ Mac Leopard