오늘도 내 삽질 인생에 족적을 남긴다.

이번에는 공개 개발 툴인 Eclipse를 맥에 설치하여 보았다. Eclipse는 open source, cross platform의 통합 개발 도구, 이른바 Integrated Development Environment(IDE)이다. 더 이상의 자세한 설명은 생략.

오늘 삽질했던 내용.
1. 정적 라이브러리로 개발하여 빌드된 "libuser.a" 라는 라이브러리가 있다고 하자. 이놈을 응용프로그램 프로젝트에서 링크하려고 한다. 어떻게?
  1. 응용프로그램 프로젝트의 Properties을 연다. (옵션+엔터)
  2. 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
  3. 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
  4. 서브 메뉴의 MacOS X C++ Linker > Miscellaneous 선택.
  5. Other objects 항목에 링크하고자 하는 라이브러리를 입력한다.
  6. Build
2. 이렇게하여 링크할 라이브러리를 추가하고 다시 빌드 하였더니 이번에는 다음과 같은 링크에러가 떴다.
구글신에게 물어보자. 원인은 정적라이브러리의 오브젝트 파일(.o)들을 압축할 때 목차를 만들지 않았기 때문이다. 콘솔에서는 ranlib 명령을 이용하는데 Eclipse의 Static Library 프로젝트 템플릿에서는 이 과정을 거치지 않는 모양이다. 해결책은 다음과 같음.
  1. 정적라이브러리 프로젝트의 Properties을 연다.
  2. 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
  3. 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
  4. 서브 메뉴의 GCC Archiver >> General 선택.
  5. Archiver flags라는 항목 하나가 나타난다. 여기에 "-r -s"라고 입력.
  6. Build
다시 빌드를 하면 Console 창에서 ranlib이 실행됐음을 확인할 수 있다.

3. 이렇게 해서 끝난 줄 알았더니 끝이 아니었음. 3D 시뮬레이터라서 OpenGL, GLUT, glew 등의 라이브러리가 필요했던 것.

glew의 추가: glew는 macports를 이용하여 설치했으므로 다른 Linux OS와 같이 링크한다.
  1. 응용프로그램 프로젝트의 Properties을 연다. (옵션+엔터)
  2. 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
  3. 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
  4. 서브 메뉴의 MacOS X C++ Linker > Libraries 선택.
  5. Libraries (-l) 항목에 glew를 추가. 
OpenGL, GLUT의 추가: OpenGL 및 GLUT 라이브러리는 위와 같은 방법으로는 추가가 안된다. 맥 OSX에서는 OpenGL과 GLUT를 framework(헤더와 라이브러리가 들어있는 압축파일)로 제공하고 있다.
  1. 응용프로그램 프로젝트의 Properties을 연다. (옵션+엔터)
  2. 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
  3. 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
  4. 서브 메뉴의 MacOS X C++ Linker > Miscellaneous 선택.
  5. Linker flags 라는 한줄짜리 항목이 있다. 이곳에 "-framework GLUT -framework OpenGL" 을 입력.

이렇게 해서 결국 성공했음.





Posted by unknowny
: