All posts by RSR

iPhone non official SDK aka ToolChain finally setup

iPhone non official SDK aka ToolChain finally setup

Woo.. after doing the process almost ten times, downloading the fullxodetools.dmg(~924mb) i finally have the iPhone toolchain working.. ihave setup the non official iPhone SDK ,, untill the official by Applecomes out in Feb’08 .
Start developing native iPhone apps today, no more web 2.0…
There are many guides out there, i am just telling my expierience, hope it works for you..
It uses the GC++, GCC compiler in linux..
I used Fedore 7 on VMware(virtual machine, you can grab both of them for free) to build the toolchain. I recomd.linux for good performance..
Content from –http://code.google.com/p/iphone-dev/wiki/Building,with my tips inBOLD.

HOWTO build the toolchain
Run terminal…

  • Ensure that you have a copy ofbisonandflexinstalled on your system. All major systems should have these tools installed or available in package management systems.Most linux flavours have the packages, you can skip this..
  • $ bison--version
    GNU
    Bisonversion1.28
    $ flex
    --version
    flex version
    2.5.4
  • Check out a copy of LLVMSVN, and build areleasebuild (as opposed to a debug one). Currently, due toIssue 70, we are limited to revision 42498.it will take some time while files are being downloaded to your PC from internet, probably no errors here
  • $ svn co http://llvm.org/svn/llvm-project/llvm/trunkllvm-svn -r 42498
    $ pushd llvm
    -svn
    $ .
    /configure --enable-optimized
    $ make ENABLE_OPTIMIZED=1
    $ sudo make install
    $ LLVMOBJDIR=`pwd`
    $ popd
  • Check out a copy of the iphone-dev SVN repository.(it will take large amount of time, the longest step of all)
  • $ svn checkout http://iphone-dev.googlecode.com/svn/trunk/iphone-dev
    $ pushd iphone
    -dev
  • Make a directory to hold the toolchain.
  • $ sudo mkdir/usr/local/arm-apple-darwin
  • Build odcctools. (you will get some error if you are using CYGWIN on windows here, refer to there site for details)
  • $ mkdir-p build/odcctools
    $ pushd build
    /odcctools
    $
    ../../odcctools/configure--target=arm-apple-darwin--disable-ld64
    $ make
    $ sudo make install
    $ popd
  • Geta copy of the iPhone root filesystem. This is usually obtained bydecrypting and extracting the iPhone restore software usingthese tools, but there are many other methods to obtain this, including simply usingscpto download all the files from the iPhone over Wi-Fi. (Scroll below for a download link of ready to use iPhone 1.0.2 image) Unpack the root filesystem somewhere, and set the environment variable$HEAVENLYto its path. (set this again if you restart system or terminal)
  • $ HEAVENLY=/usr/local/share/iphone-filesystem
  • Install the iPhone headers to the appropriate place. If you aren’t on Mac OS X, replace the/Developer/SDKs/MacOSX10.4u.sdkpath with the full path to the unpacked Mac OS X 10.4 Universal SDK(ie.MacOSX10.4u.sdk). If you don’t have a copy of this,scroll below..
  • $ pushd include
    $
    ./configure --with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk
    $ sudo bash install
    -headers.sh
    $ popd
  • Install csu, which includescrt1.o,dylib1.o, andbundle1.o.Don’t rebuild them from source, as this requires a working cross-GCC,which you don’t have yet (and the build-from-source process for csu isbroken right now anyway). Binaries are provided for this reason.
  • $ mkdir-p build/csu
    $ pushd build
    /csu
    $
    ../../csu/configure--host=arm-apple-darwin
    $ sudo make install
    $ popd
  • Onlyif you are compiling onleopard10.5. This is an ugly workaround and compiling with the resulting toolchain will give you a warning.
  • $ mv llvm-gcc-4.0-iphone/configure llvm-gcc-4.0-iphone/configure.old
    $ sed
    's/^FLAGS_FOR_TARGET=$/FLAGS_FOR_TARGET=${FLAGS_FOR_TARGET-}/g'\
    llvm
    -gcc-4.0-iphone/configure.old>llvm-gcc-4.0-iphone/configure
    $
    exportFLAGS_FOR_TARGET="-mmacosx-version-min=10.1"
    $ sudo ln
    -s/usr/local/arm-apple-darwin/lib/crt1.o\
    /usr/local/arm-apple-darwin/lib/crt1.10.5.o
  • Configure and make LLVM-GCC. Make sure that$LLVMOBJDIRand$HEAVENLYare set per the instructions above.(igot the errors like error 1, error 2 more than 5 times, i solved thisproblem by changing lots of files,symlinks in /usr/lib folder of iphoneimage hence i have uploaded my modified working iphone image. see belowfor errors).
  • $ 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
    $ make LLVM_VERSION_INFO
    =2.0-svn-iphone-dev-0.3-svn
    $ sudo make install
    $ popd
    $ popd

You’re done. Have fun!

Gotchas

  • Makesure that there are no spaces in any of the directory names that youuse. GCC does not build if there are spaces in the directory names, andthe shell scripts will not work. This is most often a problem onWindows.
  • Make sure that/usr/local/binis in yourPATH.This is not the case out of the box on Mac OS X, although chances areif you’ve installed things from source before you’ve added it already.
  • If LLVM failed to compile because of missingbisonand/orflex(evidence that this was the case is a failed compile onutils/TableGen/FileLexer.l), you mustmake cleananddeleteutils/TableGen/FileParser.hbefore trying again withbisonandflexinstalled. LLVM’smake cleanscript does not always properly clean up after a failed build.
  • Make sure that$HEAVENLYpoints to a copy of the full iPhone root filesystem, not just theunpacked update DMG. If you get errors about being unable to find-lc, then your$HEAVENLYis set incorrectly, you mistyped the--with-heavenlyoption toconfigure, or your copy of the root partition is incomplete. Your copy of the iPhone root filesystemmustinclude ausr/lib/libc.dylibfile.

HOWTO obtain the Mac OS X headers on Linux or Windows

=Install thecpioutility using your distribution’s standard package management system.All the major Linux distributions, as well as Cygwin, should have thisutility.
=No needtodownload the whole xcode tools dmg (~924mb). I extracted thepackage,uploaded it for you :), download the needed file from here-http://rapidshare.com/files/66764258/MacOSX10.4u.sdk.rar
=Extract RAR, then thepaxarchive by creating a new dir and using the following command in terminal

gunzip-c MacOSX10.4u.sdk.pax.gz|cpio-i

=FindMacOSX10.4u.sdkfolder in extracted contents and link it toolchain install procedure.

LOGIN as root to avoid weird errors, password prompts again and again..

–The envirnoment variables should be set properly to check there use this command in terminal- echo $VARIABLENAME, eg. –echo $HEAVENLYif it returns blank line set it again. the envirno. variable has aliftime till the terminal runs, if you close it, you have to set itagain

— errors i got ,when i do"make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn" its runs for a long time and then results in this error */usr/local/bin/arm-apple-darwin-ld:/home/Aakash/iphone/iphone-image/usr/lib/libc.dylib truncated ormalformed object (mach header extends past the end of the file)collect2: ld returned 1 exit status make2 [libgcc_s.dylib] Error 1make2 Leaving directory`/root/iphone-dev/build/llvm-gcc-4.0-iphone/gcc' make1 [stmp-multilib]Error 2 make1: Leaving directory`/root/iphone-dev/build/llvm-gcc-4.0-iphone/gcc' make: [all-gcc] Error 2*
i did this to get off the error"openall .dylib files (<=1 k) one by one in folder/iphone-image/usr/lib/, rename it – and for example libc.dylib showspath to libSystem and libSystem – path to libSystem.B.dylib. Just copylibSystem.B.dylib twice and rename 2 new files to libc.dylib andlibSystem.dylib. do this for all <=1kb .dylib files".
The iPhone image i uploaded here contains these changes, no need to do again.


Passwordfor all my rapidshare uploadsif neededin this post isaksblog.co.nr

Usefull links-

Post toolchain install–

Need any help, post as comment…

ubuntu beryl install guide

우분투 에지에 베릴을 설치해 보았다.
베릴이란 말이 좀 이상하게 느껴지지만 KLDP에 올라온 여러 desktop환경이나
동영상을 보고 설치해 보기로 했다.

가장 중요한 것은 그래픽카드의 Direct 가속이 가능해야 한다.
그걸 알아보려면 터미널 상에서 아래의 명령을 내려본다.

    glxinfo | grep rendering

결과가 “Yes” 라고 나와야 하는데 “No”라고 나오면 그래픽 드라이버를 새로 설치하여야 한다.

내가 가지고 있는 그래픽 카드의 모델을 살펴보니 nVidia Quadro4 380 XGL 64MB 이었다.
nVidia 홈에서 관련된 드라이버를 찾아보니 NVIDIA-Linux-x86-1.0-9626-pkg1.run 베타버전 이란다.
위 파일을 받아 설치하기 위해 아래와 같이 수행한다.

컴파일 환경 설정
sudo apt-get install linux-headers-`uname -r` build-essential gcc gcc-3.4 xserver-xorg-dev

기존 nVidia 드라이버 삭제 및 X 재설정
sudo rm /etc/init.d/nvidia-*
sudo apt-get –purge remove nvidia-glx nvidia-kernel-common nvidia-settings
sudo dpkg-reconfigure -phigh xserver-xorg

gdm stop 상태에서 콘솔로 간 후 nVidia 드라이버 설치
sudo /etc/init.d/gdm stop
sudo sh NVIDIA-Linux-x86-1.0-9626-pkg1.run

Reboot후 모듈 설정을 바꾸고, xorg.conf 파일도 수정한다.

/etc/default/linux-restricted-modules-common 파일 수정
DISABLED_MODULES=”nv”

xorg.conf내 Device Section에 옵션 추가
Option “AddARGBGLXVisuals” “True”
Option “DisableGLXRootClipping” “True”


다시 Reboot후 베릴을 설치한다.
우선 /etc/apt/sources.list에 아래의 저장소를 추가 후 update 및 베릴 설치

저장소 추가
deb http://ubuntu.beryl-project.org/ edgy main

gpg key 설치
wget http://ubuntu.beryl-project.org/root@lupine.me.uk.gpg -O- | sudo apt-key add –

저장소 update
sudo apt-get update

베릴 설치
sudo apt-get install beryl emerald-themes

베릴 실행
beryl-manager


beryl을 수행하면 어떻게 이런 동작이 빠르게 수행될까 할 정도로 화려하고 멋지다.
Qt library를 다운받아 Qt Demo를 수행하면 Vector rendering 처리에서 보면 이러한 동작들이 있는데
실제 application에 이런 기능들을 구현했다는게 같은 프로그래머로서 놀라울 정도이다.

다만 내 베릴 환경에서는 2가지 문제가 발견되었다.
우선 rdesktop을 수행하면 이유없이 투명하게 나온다.
왜 redesktop에서만 그러는지 잘 모르겠고, 인터넷에서 서핑하여 여러 답안을 찾았지만 다 무용지물이다.
또, 가끔 black window bug가 발생한다. 이건 그래픽카드의 메모리가 모자라서 생겼으며,
nVidia 드라이버의 버그라고도 한다.

어쨌든 오랜만에 훌륭한 프로그램을 접해보니 기분이 좋다.

http://thisrule.egloos.com/2995248

system-config-***

☆  # system-config-***


ⓐ -display  ( X 윈도우 환경 설정 )

/etc/X11/xorg.conf  에 설정이 저장됨 ( 다른 리눅스에선 여기에서 설정변경 )

( VM ware 에서 돌릴경우 VMtools가 설치 되어있어야 제대로 설정가능 )

※ 모니터 주파수 문제로 X-윈도우가 안될경우

# vi  /etc/X11/xorg.conf 에서

Section  "Moniter"
…..
Horiz Sync   31.5 – 48.4
Vert Refresh 43.5 – 75.0

위 숫자 부분처럼 수정시 대부분의 모니터에서 해결됨… (된다고함 ;;;)


ⓑ -date  ( 날짜 설정 )


ⓒ -keyboard  ( 키보드 설정 )


ⓓ -bind  ( 네임서버 설정  ;  Desktop 에선 기본지원안함 )

Domain Name Server (DNS) : 도메인명을 IP 어드레스로 치환


ⓔ -httpd  ( 웹서버 설정  ;  Desktop 에선 기본지원안함 )

Web Server : 웹 페이지가 들어있는 파일을 사용자에게 제공하는 프로그램

                   대표적으로 Apache , IIS (Internet Information Service) , Enterprise

☞ 이메일, FTP, 파일 다운로드, 홈피구축, 전자 상거래 등

    인터넷 & 인트라넷과 관련된 프로그램들의 패키지 일부로 나옴.


ⓕ -lvm  ( LVM 설정 )

Logical Volume Management (LVM) : 논리적 볼륨 관리

                                                       디스크 드라이버의 용량을 논리적으로 조절, 관리

☞ 디스크 추가  /  타 시스템으로의 이송을 가능하게  /

    데이터 백업 , 재분할  /  포맷  ,  OS설치  ,  데이터 복구

☞ 손쉬운 디스크 재조정이 가능한 FS (File System) 구현을 위한 시스템


ⓖ -mouse  ( 마우스 설정 )


ⓘ -network  ( 네트워크 설정 )

조금뒤에 자세히 다룸~


ⓙ -nfs  ( NFS 서버 설정  ;  Desktop에선 기본지원 안함 )

Network File System (NFS) : 네트워크 상에서 FS을 공유하도록 설계된 FS의 한 종류

                                          다른 호스트에 있는 FS의 일부를 자신의 디렉토리 인것처럼 사용.

☞ 즉, Network 상의 디스크를 한 서버에서 집중관리, 나머지 시스템이 공유

☞ 보안문제가 있음


ⓚ -package  ( 패키지 추가, 삭제 관리 )


ⓛ -printer  ( 프린터 설정 )


ⓜ -rootpassword  ( 루트 계정 비번 관리 )


ⓝ -samba  ( Samba 서버 설정 )

Samba Server : ▷ 리눅스와 윈도우간에 파일 및 프린터를 공유하게 함

                       ▷ 타 운영체제와 파일을 공유하는 파일서버로도 사용 가능

                       ▷ SMB / CIFS 프로토콜 이용

※ SMB / CIFS

Server Message Block (SMB) : 윈도우시스템이 다른 시스템의 디스크나 프린터와 같은 자원을

                                             공유하게 해주는 프로토콜.  TCP/IP 기반하의 NetBIOS 프로토콜 이용

Common Internet File System (CIFS) : 네트워크를 위한 SMB 확장버전.

                                                       윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약

Network Basic Input/Output System (NetBIOS) : 네트워크의 기본적인 입출력을 정의한 규약


ⓞ -securitylevel  ( 보안 레벨 설정 )


ⓟ -soundcard  ( 사운드카드 설정 )


ⓠ -users  ( 사용자 관리 )

ntsysv  – daemon
출처는 : http://anaron.egloos.com/69499

ip 재할당

윈도우에서 콘솔화면에서 현재 랜카드를 DHCP로 사용하고 있는 중에는..
ipconfig /renew, ipconfig /release 이렇게 하면..
아이피 주소를 새로 할당 받고, 아이피를 해제 하는데..
프로그래밍에서는 ipReleaseAddress, ipRenewAddress 함수가 존재하는데..
리눅스에서는 윈도우에서 처럼 지원하는게 있나요?
service network restart 이런거 말고요..
리눅스 프로그래밍에서 사용할 수 있는 함수나..
리눅스 터미널에서 사용 가능한 방법 좀 알려주세요..

 

service (/etc/init.d/network) network restart 명령어는 말 그대로 network 데몬을 재시작하는 명령어입니다.

DHCP로 할당이 되어 있다면 시작을 하면서 IP주소를 DHCP서버로부터 받아 오지요

 

이 방법이 아니면 (만약 eth0 이 꽂아져 있는 랜카드라면)

# ifdown eth0

# ifup eth0

명령어를 수행하시면 다시 받아 오는 역할을 하구요.

 

파일은

/etc/sysconfig/network-scripts/ifcfg-eth0 (1,2,3,4,) 을 vi 로 여시고 수정하시고 위에 ifdown, ifup 명령어를 수행하시면 됩니다.

 

network 상태를 보는 명령어는

# ifconfig 이구요 (ipconfig 와 비슷하죠?)

# ifconfig -a 하시면 전체 인터페이스에 대한 결과를 보여 줍니다.

 

장비에 랜선이 제대로 연결되어 있는 지를 보는 명령어는

# mii-tools 라고 치시면 됩니다.