[펀글] Objective-C On Linux

2010.10.01 22:48

가을의 곰을... 조회 수:19947

Objective C

편집하기

이 페이지는 Linux 환경에서 Objective-C를 공부하고자 할 때 발생했던 문제들을 정리한 것이다.

 

개발 환경

Ubuntu 9.10

 

일반적으로 개발 환경이 갖추어져 있다고 했을 때,

1.                    sudo apt-get gobjc libobjc2

(아마도 gobjc만 인스톨하면 libobjc2는 의존성으로 따라올 듯)

으로 충분하다. 개발 환경을 아직 갖추지 - gcc가 설치되어 있지 - 않은 사람은

1.                    sudo apt-get build-essential

로 환경을 갖출 수 있다.

 

구글링하면 GNUstep을 설치해야 objective-c를 컴파일 할 수 있다고 설명하는 문서가 많은데, 다들 예전에 작성된 문서라서 그렇다. gcc가 objective-c를 공식적으로 지원하고 있으니 순수하게 objective-c 언어만을 공부할 것이라면 GNUstep이 꼭 필요하지 않다.

 

1.                    j0nguk@dviis-jonguk-ubuntu:~/workspace$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.1-4ubuntu8' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs
 --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu8)
j0nguk@dviis-jonguk-ubuntu:~/workspace$

현재 컴퓨터에는 gcc 4.4.1이 설치되어 있으며 objc가 지원 가능하고 gc가 역시 가능하도록 컴파일 되었다는 것을 알 수 있다.

 

NSObject?

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

많은 objective-c 예제들이 NSObject를 상속하고 있다. NSObject를 사용하기 위해서는 GNUStep을 설치해야 하는데, 사실 꼭 그럴 필요가 없다. 같은 역할을 하는 객체를 GNU Objective-c가 이미 가지고 있기 때문이다.

NSObject를 사용하는 예제들은

1.                    #import <Foundation/NSObject.h>

로 시작하여 NSObject를 이용하라고 하지만, GNUstep을 설치하지 않았으므로,

1.                    #import <objc/Object.h>

를 하여 Object를 사용할 수 있다. 즉, 예제에서 NSObject라고 되어 있는 것을 Object로 바꾸면 된다.

 

How to Compile

간단하게 command line에서 컴파일을 하기 위해서는

cc 소스코드(들) -lobjc_gc -ldl

1.                    ex) cc -Wall main.m MyObject.m -lobjc_gc -ldl

를 이용할 수 있다. -lobjc_gc는 objc(objective c) library를 이용하라는 의미인데, _gc는 gabage collection 기능을 사용한다는 의미이다. 사용을 원하지 않을 때는 -lobjc로 충분하다. -lobjc_gc를 이용할 때

1.                    libobjc_gc.so: undefined reference to `dlopen' collect2: ld returned 1 exit status

과 같은 에러가 발생한다면 예제와 같이 -ldl를 뒤에 함께 붙여주면 된다.

objc_gc를 붙이는 것에 대한 자세한 설명은 http://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_7.html#SEC131 에 있다.

 

C와의 호환성

openssl 라이브러리를 이용해서 간단한 프로그램을 작성할 때 objc로 컴파일을 해봤다. 아무런 문제가 없다. c++보다는 오히려 c와의 연계가 더 좋을 듯하다.

 

 [출처] http://john6.springnote.com/pages/4566233

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
27 자바로 구현하는 Web-to-web 프로그래밍, Part 1 가을의 곰을... 2011.08.21 10018
26 multipart/form-data를 지원하는 HttpRequestor의 구현 가을의 곰을... 2011.08.21 11889
25 리눅스 커널 컴파일 요지 가을의 곰을... 2011.04.28 19135
24 유닉스 쓰레드 프로그래밍 가을의 곰을... 2010.11.15 12630
23 Unix 개괄 file 가을의 곰을... 2010.10.21 13927
22 컴퓨터 자동종료 설정하기 file 가을의 곰을... 2010.10.15 24453
21 ACE Framework에 사용된 패턴들 file 가을의 곰을... 2010.10.02 17410
20 [펌] Objecitive-C On Ubuntu 가을의 곰을... 2010.10.02 21426
» [펀글] Objective-C On Linux 가을의 곰을... 2010.10.01 19947
18 경의선 : 서울역 <=> 상암DMC 출퇴근용 시간표 가을의 곰을... 2010.09.26 21410
17 게임보이로 풀어보는 광기 "역전재판" file 가을의 곰을... 2010.08.21 14694
16 안녕하세요 곰피 늙은왕자 2009.12.15 24659
15 名 言 錄"(리더스다이제스트 1983.3--1988.1) 가을의 곰을... 2009.11.01 14934
14 "우주의 힘이 당신과 함께하길(May the Force be with you)" file comphy 2009.10.31 26761
13 AIMA Python Code, 파이썬 인공지능 코드 가을의 곰을... 2009.10.18 20985
12 Standards and Style for Coding in ANSI C 가을의 곰을... 2009.10.11 15654
11 도스아래한글 필기체 폰트 file 가을의 곰을... 2009.10.04 30882
10 기술사 시험 준비 요령 가을의 곰을... 2009.10.04 25006
9 기술사공부방법 (이제언기술사) 가을의 곰을... 2009.10.04 25561
8 GSM : Overview of the Global System for Mobile Communications 가을의 곰 2009.10.04 20790
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED