2013-10-09

pdlisp object for Pd, MacOS에서 컴파일하기

pdlisp는 박성민이 만든 lisp 객체다. 사용이 아주 간편하다. lisp 스크립트를 pd에서 사용할 수 있다. 최대 장점은 실시간 사용이 완벽하다는 것이다. 10ms 단위의 빠른 계산도 무리가 없다. 내가 공부하는 프랑크푸르트의 전자음악 교수 Orm Finnendahl도 이 것에 대해 극찬하였다.


사용법은 프로젝트 사이트에 가서 다운 받아 사용하면 된다.

여기서 알아볼 것은 컴파일 해서 사용하는 법이다. 기능을 추가하거나, 코드를 발전시켜 보려면 이 과정이 꼭 필요하다.

방법을 소개하겠다.

----

OS Ver:
Mac OS X 10.8.5 Mountain Lion

준비물:
Xcode를 설치한 후 Command line tool도 설치한다.
homebrew
Pd-0.45-3 (버젼은 무관하다. 어자피 header만 따오기 때문에. 단, 꼭 32bit로 한다.)
ecl-13.5.1 (source)
pdlisp (source)


----

1. gcc 컴파일러를 설치한다. Mountain Lion에는 기본으로 llvm이 들어있고, gcc-4.2가 없다! 따로 설치를 해 줘야 한다. 먼저 homebrew를 설치해야 하는데, 공식적인 방법은 이렇다. http://brew.sh/ 에서 참고하거나 밑의 설치 스크립트를 쓰면 된다.

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"


gcc-4.2설치 (박성민 권장)

$ brew tap homebrew/dupes && brew install apple-gcc42


2. 설치된 gcc-4.2의 폴더 위치를 알아내야 한다.

gcc경로 알아내기

$ locate gcc-4.2

알아낸 경로는 내 경우엔 /usr/local/Library/ENV/4.3 이었다. 다음에 나오는 export에 정확히 적어준다.

3. ecl을 다운받고 ecl 압축풀고 폴더로 간다. export CC=컴파일러위치 (박성민 권장)

$ export CC=/usr/local/Library/ENV/4.3/gcc-4.2 
$ export CFLAGS="-arch i386"
$ export LDFLAGS="-arch i386" 
$ CC=gcc-4.2 ./configure --disable-shared
$ make$ make install


### 경고! ./configure --disable-shared 이렇게안하면 ecl이 동적(dynamic) 라이브러리로 된다. 그럼 pd external object를 못 만든다. 반드시 주의한다.
### 확인! /usr/local/lib/ecl-13.5.1/librt.a 과 libcmp.a 확인, 있으면 정적라이브러리(static)으로 설치된 것이다.

설치되는 경로 /usr/local/lib/ecl-13.5.1/

ecl은 설치 완료 되었다. 다음 단계로 간다.
-----------

4. Pd로 링크를 해줘야 한다. 다운받은 Pd 폴더를 알아낸다. 경로만 파악하면 된다.

내 경우엔 여기였다. 하지만 다를 수도 있으니 꼭 확인을 해보자. 0.45-3을 다른 숫자로 바꾸면 아마 될 것이다. /Applications/Pd-0.45-3.app/Contents/Resources/src 이것을 잘 기억해 놓는다.

-----------

5. pdlisp 컴파일하기

자 본론이다. pdlisp를 다운받고 압축을 푼 뒤에 그 디렉토리로 간다.

$ export PD_INCLUDE=/Applications/Pd-0.45-3.app/Contents/Resources/src ### 경로는 앞서 4번과정에서 알아낸 것을 사용한다.
$ export ECL_LIBS=/usr/local/lib/ecl-13.5.1 ### 앞서 알아낸 경로를 입력해 준다.
$ make


만들어진 파일
pdlisp.pd_darwin

성공했다. pdlisp-help.pd를 Pd로 실행하면 된다. 단, 그 폴더에 pdlisp.pd_darwin과 help.lisp 파일이 존재해야 한다.

사용법은 기회가 되면 다시 설명하겠다. 멋진 작업을 해준 박성민에게 감사를 표한다.

해보고 안되면 저나 박성민에게 문의해 주세요.

No comments:

Post a Comment