有一陣子沒有玩 iOS 的東西,因為一些需求想要在 iOS 裡觀察系統變化,所以寫了一隻簡單的 C 程式,好不容易搞出個 gcc 後,編譯時會顯示 header file not found 的資訊,連 stdio.h 都找不到。所幸,網路上還滿多人把玩 nodejs on iPhone 的,不一會兒就找到解答啦 :D 順道筆記一下。以上的行為都是要 jailbreak 後才能進行的。

安裝 gcc:

在 Cydia 裡頭可以找到 gcc,但安裝時卻說需要 libgcc 才能進行,網路上有一些別人編好的 libgcc ,在此使用 http://apt.saurik.com/debs/ 裡頭的 libgcc_4.2-20080410-1-6_iphoneos-arm.deb,其中 saurik.com 正是 Cydia 開發及維護者,既然 jb 都建立在 Cydia 上頭,就沒啥好懷疑資安了 XD

@ iOS 系統
# cd /tmp
# wget http://apt.saurik.com/debs/libgcc_4.2-20080410-1-6_iphoneos-arm.deb
# dpkg -i libgcc_4.2-20080410-1-6_iphoneos-arm.deb

安裝完 libgcc 後,就可以在 Cydia 上頭順利安裝 gcc 囉

還有其他安裝法,可以參考:http://code.google.com/p/iphone-gcc/wiki/Installing

安裝相關 header files:

參考 How To: Set up GCC on iOS 4 的一些步驟,首先要在 iOS 裡頭安裝 rsync ,直接用 Cydia 安裝即可(我也順便安裝了 wget、vim 和 screen),接著,由於現有的 Mac OSX 環境是 Mac OSX 10.6 與 Xcode 4.2 (Build 4C199),裡頭用的是 iOS 5 SDK,因此採用的指令:

@ Mac OSX 10.6 + Xcode 4.2
> rsync -avz --ignore-existing -e ssh /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/ root@Your_Device_IP:/usr/lib
> rsync -avz --ignore-existing -e ssh /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/include/ root@Your_Device_IP:/usr/include
> rsync -avz --ignore-existing -e ssh /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/PrivateFrameworks/ root@Your_Device_IP:/System/Library/PrivateFrameworks/
> rsync -avz --ignore-existing -e ssh /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks/ root@Your_Device_IP:/System/Library/Frameworks/
> scp /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/usr/include/crt_externs.h root@Your_Device_IP:/usr/include/crt_externs.h

如此一來,就可以有對應的系統 header files 啦,雖然編譯時會顯示一堆 ld warning: bad symbol version,但對我而言剛好不影響程式的執行,就不管他了 XD 終於,我可以寫 C 了!!


文章標籤
創作者介紹

第二十四個夏天後

changyy 發表在 痞客邦 PIXNET 留言(0) 人氣()