시작하기 전에...
Windows 환경에서 Visual C++에 익숙해져 있던 나에게 새로운 도전이 시작되었다.
다름아닌 Linux 환경에서의 Programing이다.
상당히 힘든 도전으로 여겨졌지만, Eclipse CDT라는 IDE를 발견하고서 자신감이 생긴다.
Eclipse CDT! 아무래도 이녀석과 친해질듯 싶다.
Eclipse CDT에서 간편하게 static library를 만들수가 있다.
또한 만들어진 library를 가지고, 링크하여 사용하기도 굉장히 수월하다.
1. static library 만들기
- 새로운 프로젝트를 생성한다.
우리는 static library를 만들 것이기 때문에 static library를 선택하고 라이브러리의 이름을 써준다.
- 라이브러리에 사용할 클래스를 생성하도록 하자.
- 클래스 이름을 적어주고 완료 버튼을 눌러서 생성한다.
- 클래스가 완성되었으므로, 이제 코딩을 해야겠지?
- 당연히 CPP 해당 함수를 정의해야겠지?
Hello World!!라는 글자가 찍히는 함수를 하나 만들었다.
- 저장후 빌드하고 컴파일 한다.
- 소스코드가 컴파일 되고, 오브젝트 파일과 라이브러리 파일이 만들어졌다.
Unix계열에서는 라이브러리의 이름은 lib로 시작하고 확장자는 .a임을 잊지 말자!
2. static library 사용하기
- 이제 방금 만든 static library를 테스트 하기 위해서 C++ 프로젝트를 만든다.
- 빈 프로젝트로 만들었으니 실행할 소스 파일을 만들어야겠지?
- main.cpp를 만들고 완료를 누른다.
- 이제 틀은 다 갖춰진것 같군.
- 아까전에 만들었던 static library를 사용하기 쉽도록 지금 만든 빈 프로젝트에 복사한다.
좀 더 사용하기 쉽게 하려고 'inc'폴더와 'lib'폴더를 만들었다.
- 라이브러리 헤더 파일을 복사한다.
- 라이브러리 파일을 복사한다.
- 이제 프로젝트 -> 속성 -> C/C++ General -> Paths and Symbols에서 include 탭에 복사해 두었던 헤더파일을 포함하도록 한다. Add 버튼을 클릭한다.
- File system 버튼을 눌러서 해동 폴더를 찾는다.
- 포함할 폴더를 선택하고 확인을 누른다.
- 원하는 폴더를 포함하였다.
- 포함 파일의 폴더가 정확히 등록되었는지 확인하시고~
- 다음은 라이브러리 파일이 존재하는 폴더의 경로를 등록해보자.
- 아까처럼 File system을 누르고 폴더를 찾는다.
- 확인을 클릭~
- 등록한 라이브러리 경로가 맞는지 확인하시고~
- 자! 다음은 C/C++ Build -> Settings -> Tool Settings에서 Linker에 라이브러리를 등록하자.
Linker 탭에 Libraries를 선택하면 그림과 같은 화면이 출력된다.
여기서 오른쪽 중단에 Libraries (-l) 항목에 녹색의 추가 아이콘을 클릭한다.
라이브러리를 링크하는 방법이 두가지가 있다.
첫째, 옵션 -l의 사용이다. 이는 해당 라이브러리가 표준 장소(/usr/lib)에 존재할 때 해당
라이브러리 이름을 등록하면 된다.
둘째, 옵션 -L의 사용이다. 이는 해당 라이브러리가 표준 장소(/usr/lib)에 존재하지 않을 때
사용하며 사용하고자 하는 라이브러리의 전체 경로를 넣어주어야 한다.
- 이제 라이브러리의 이름을 등록할 차례이다.
아까도 언급했다시피 Unix 계열에서는 라이브러리의 이름은 lib로 시작하고 확장자는 .a다.
여기서 lib와 .a를 뺀 나머지가 바로 라이브러리의 이름이다.
만약에 라이브러리 이름이 lib*.a로 시작하는 형식이 아닌 그냥 test.a라는 식이라면 위에서의 방식으로는 링크가 불가능하다. 이때는 G++ Linker - Miscellaneous - 두번째 하단의 Other objects에 해당 test.a를 직접 넣어주면 된다. 이제 파이팅 해봅시다.
- 최종적으로 라이브러리까지 등록했다면 적용을 누르고 확인을 누르자!
- 이제 아까 만들어 두었던 main.cpp에다가 실제 main함수를 만들고, 우리가 만들었던 my 라이브러리를 테스트 해볼 시간이다.
헤더 파일을 인클루드하고 클래스 객체를 선언한 후 Hello World 함수를 호출하고 컴파일 해보자.
그림처럼 무난히 컴파일이 될 것이다.