클래스 라이브러리를 프레임워크라 부르기도 하던데, 사실 차이점을 보고나면 구분을 하는것이 좀더 낫겠다싶다.


1. 클래스 라이브러리.

- 재사용 가능한 빌딩블럭(reusable building blocks)

- 도메인 독립적임(domain independent)

- 제한적인 영역(limited in scope)

- 수동적임(passive)


2. 프레임워크

- 재사용 가능하면서도, "거의 완성된(semi-complete)" 어플이다.

- 도메인 특화됨(domain-specific)

- 보다 광범위함.(broader in scope)

- 능동적임(active)


그림을 보면 좀더 차이를 볼 수 있는데,  프레임워크 다뤄봤다는 개발자라면 자신이 사용했던 프레임워크의 구성요소를 디자인화해서 설명할 수 있어야 하지 않을까싶다.



Posted by Jason Ryu
,

링커마다 차이가 있을수는 있는데, GNU gcc를 사용한다면 분명 문제가 생길때가 있다.
즉, gcc(실제로는 ld)가 링크작업을 수행하면서 '라이브러리 목록'을 앞에서 뒤로 한번만 검색하기때문에 생기는 문제.
그런 경우를 위해서 ld 옵션에는
-Wl,--start-group {라이브러리 목록} -Wl,--end-group
이 마련되어 있다.(-Wl 대신 -Xlinker를 사용해도 된다)
 즉, 라이브러리 목록은 한번 더 검색해준다는 얘기.

그런데, 자동화 빌드 도구들(automake, autoconf, 등등)을 사용할때는 적용하기가 어렵다.
Makefile.am 작성할때 ld 옵션을 넣고 싶긴한데, 아무리 매뉴얼을 뒤져봐도 그런 옵션들을 넣을 방법이 안나온다.
즉, GNU의 그런 도구들은 '위치 의존적인 옵션'들에 대해서는 자동화도구에서 '이식성'문제로 지원하질 않는다.

비록 편법이긴하지만, 간단한 해결책은 "그냥 목록을 두번 작성하는 것"이다.
USER_LIBS=-lcommon -lutil -lmisc

였다면
USER_LIBS=-lcommon -lutil -lmisc -lcommon -lutil -lmisc

라고 두번쓰는것.

 
Posted by Jason Ryu
,