2012년 7월 7일 토요일

Basilisk II

우분투에 Macintosh 에뮬레이터인 Basilisk II를 설치하기

Ubuntu 10.04
Basilisk II 0.91

Basilisk II의 공식 홈페이지는 http://basilisk.cebix.net/ 입니다.
글을 쓰는 현재의 최종 버전은 2001년 5월 31일에 만들어진 0.91입니다.

일단 다운로드 받아서

tar xvf BasiliskII_src_31052001.tar.gz
을 하면
BasiliskII-0.9라는 폴더 밑에 소스가 풀립니다.


README는 별거 없고 INSTALL이라는 파일을 읽어 보면 설치하는 방법이 나옵니다.

유닉스에서는 X11R6, make, pthread, GTK+ 1.2이상
여기에 리눅스인 경우는 glibc 2.0 이상이 필요하다고 합니다.

설치 방법은,
cd src/Unix
./configure
make
make install
간단하죠?

실제로 해보니 처음부터 막히는군요.
./configure 의 결과 입니다.
뭔가 no가 많네요.
./configure 수행 결과

그래도 다음 절차로 넘어갑니다.
make의 결과
make 수행 결과

소스를 보았는데, 이상한 상수가 정의된 경우인 부분을 컴파일 합니다.
그게 어디에서 정의가 된건지 찾을 수도 없고....
이정도 잘못된 건, 소스 자체의 문제가 아니라 시작부터 뭔가가 어긋난 결과인 듯 합니다.
이런 문제를 소스 코드를 통해 원인을 찾아나가도 결국에는 미궁으로 빠지는 경우가 대부분입니다.

우선은 아까의 ./configure 부분으로 돌아가겠습니다.
결과에서는 no가 있어도 깨끗해 보였지만 사실 중간에 오류 메시지가 있었습니다.
GTK에 문제가 있음을 알 수 있습니다.
./configure 과정 메시지

시냅틱 패키지 관리자에서 대충 찾아서 설치했습니다.
하지만 설치 후에도 결과는 마찬가지....
(확인해 보니 제 시스템에는 GTK는 2.0이 이미 설치되어 있었습니다.)

잠시 고민하고 잠자고 일어나서 인터넷 검색을 해 보았습니다.
비슷한 문제들이 있었군요.
http://www.linuxquestions.org/questions/linux-software-2/gtk-source-install-doesnt-give-gtk-config-333626/
GTK 1.x에서는 gtk-config라는 스크립트사 제공되었는데,
그 이후 버전에서는 gtk-config가 사라졌답니다.

이마도 GTK 1.x 버전을 기준으로 만들어진 프로그램들은 gtk-config를 사용하도록 만들어진 거 같습니다.
Basilisk II도 2001년에 만들어진 프로그램이니 그럴 가능성이 높겠죠.

그래서 GTK 1.x 버전을 설치하기로 결정....
공식 사이트에서 구할 수 있는 버전은 GTK 1.2.10이 1.x의 최종 버전입니다.

가볍게 성공하겠지 생각하고 다운받아
압축 풀고
./configure하니....결과가....
GTK 1.2.10의 ./configure
이번에는 GLIB 1.2.8이 필요ㅠ.ㅠ
현재 시스템에는 GLIB 2.0이 설치되어 있는데....

GLIB 또한 같은 사이트에서 배포하는 라이브러리이므로 1.x 버전 다운로드.
1.x의 최종 버전은 1.3.15

하지만 GLIB 1.3.15를 다 빌드해 보아도 glib-config는 없었습니다.

다시 GLIB 1.2.10을 받아서 빌드해 보니 다시 에러....

문득 회의가 들었습니다.
설령 모든게 성공해서 Basilisk를 빌드하고 설치하는 데 성공한데 해도,
그 Basilisk가 구동되는 환경은 downgrade된 GTK와 GLIB 환경에서만 가능한게 아닐까?
그렇다면 상위버전의 GTK와 GLIB을 사용하는 다른 많은 프로그램들은 어떻게 된단 말인가?

어려운 길이지만 Basilisk가 상위의 GTK와 GLIB을 사용할 수 있도록 수정하는게 올바른 방향이 아닐까?

====================================
문제를 해결하기 위해 찾아 본 결과,
현재 봉착한 문제는 compile의 문제와 GTK의 문제가 별개였습니다.

위에서 make 수행 시 나온 오류 메시지는 syscall5라는 매크로의 문제인 것으로 보입니다. 궁극적으로는 llseek()라는 함수를 사용하기 위한 방법인데, Basilisk에서 특이하게 사용한 것이 아니라, 통상적으로 사용되는 코드였으나, 어찌된 영문인지 제 시스템에서 오류가 나고 있는 것으로 보입니다.
구글에서 syscall5로 검색해 보아도 비슷한 문제들이 많이 나옵니다.
그 중 하나,
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=392236

GTK의 문제는, 좀 더 찾아 봐야 하겠지만,
1.x와 그 이후 버전 간에 많은 차이가 있다면 두개의 버전이 하나의 시스템에서 동시에 운용이 가능하지 않을까 하는 생각이 듭니다.
그렇지 않다면 일단 downgrade한 후에, 빌드 후 다시 upgrade하는 것도 한가지 방법이 아닌가 합니다. 물론 빌드가 성공했어도 upgrade후에는 동작이 정상일지 장담할 수는 없지만 말입니다.

댓글 없음: