Eclipse를 이용한 C/C++ 프로그램 개발
~2014/삽질을 피하는 방법 2009. 4. 30. 06:56 |오늘도 내 삽질 인생에 족적을 남긴다.
이번에는 공개 개발 툴인 Eclipse를 맥에 설치하여 보았다. Eclipse는 open source, cross platform의 통합 개발 도구, 이른바 Integrated Development Environment(IDE)이다. 더 이상의 자세한 설명은 생략.
오늘 삽질했던 내용.
1. 정적 라이브러리로 개발하여 빌드된 "libuser.a" 라는 라이브러리가 있다고 하자. 이놈을 응용프로그램 프로젝트에서 링크하려고 한다. 어떻게?
- 응용프로그램 프로젝트의 Properties을 연다. (옵션+엔터)
- 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
- 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
- 서브 메뉴의 MacOS X C++ Linker > Miscellaneous 선택.
- Other objects 항목에 링크하고자 하는 라이브러리를 입력한다.
- Build
2. 이렇게하여 링크할 라이브러리를 추가하고 다시 빌드 하였더니 이번에는 다음과 같은 링크에러가 떴다.
구글신에게 물어보자. 원인은 정적라이브러리의 오브젝트 파일(.o)들을 압축할 때 목차를 만들지 않았기 때문이다. 콘솔에서는 ranlib 명령을 이용하는데 Eclipse의 Static Library 프로젝트 템플릿에서는 이 과정을 거치지 않는 모양이다. 해결책은 다음과 같음.
- 정적라이브러리 프로젝트의 Properties을 연다.
- 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
- 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
- 서브 메뉴의 GCC Archiver >> General 선택.
- Archiver flags라는 항목 하나가 나타난다. 여기에 "-r -s"라고 입력.
- Build
다시 빌드를 하면 Console 창에서 ranlib이 실행됐음을 확인할 수 있다.
3. 이렇게 해서 끝난 줄 알았더니 끝이 아니었음. 3D 시뮬레이터라서 OpenGL, GLUT, glew 등의 라이브러리가 필요했던 것.
glew의 추가: glew는 macports를 이용하여 설치했으므로 다른 Linux OS와 같이 링크한다.
- 응용프로그램 프로젝트의 Properties을 연다. (옵션+엔터)
- 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
- 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
- 서브 메뉴의 MacOS X C++ Linker > Libraries 선택.
- Libraries (-l) 항목에 glew를 추가.
OpenGL, GLUT의 추가: OpenGL 및 GLUT 라이브러리는 위와 같은 방법으로는 추가가 안된다. 맥 OSX에서는 OpenGL과 GLUT를 framework(헤더와 라이브러리가 들어있는 압축파일)로 제공하고 있다.
- 응용프로그램 프로젝트의 Properties을 연다. (옵션+엔터)
- 좌측의 메뉴에서 C/C++ Build > Settings 항목을 선택.
- 오른쪽 창에서 Tool Settings를 선택. (첫번째 항목임)
- 서브 메뉴의 MacOS X C++ Linker > Miscellaneous 선택.
- Linker flags 라는 한줄짜리 항목이 있다. 이곳에 "-framework GLUT -framework OpenGL" 을 입력.
이렇게 해서 결국 성공했음.