Unix Linux

[펌] so 파일 생성

_침묵_ 2005. 10. 6. 20:42
공유 라이브러리의 생성

공유 라이브러리의 생성은 쉽다.

  먼저gccfPIC플래그("position inde- pendent code" 공유라이브러리로 사용할 때 필수)를 사용하여 오브젝트 파일을 생성한다. 그 다음엔 다음과 같은 명령형태로 공유 라이브러리를 생성한다.

gcc-shared -WI, -soname, your_soname\-olibrary_name file_list library_list
  두 개의 오브젝프 파일(a.o, b.o)을 포함하는 하나의 공유 라이브러리를 생성 하는 예를 들면 아래와 같다. 컴파일시에 공유 라이브러리에 필요한 것은 아니 지만 권고되는 사항인 디버깅 정보(-g옵션)와 경고(- wall옵션)의 생성에 유의 하라, 그리고 -c옵션으로 오브젝트 파일이 생성되며 분명히 -fPIC 옵션이 사 용되고 있다.
gcc -fPIC -g -c -Walla.c
gcc -fPIC -g -c -Wallb.c
gcc -shared -Wl,-soname, libmystuff.so.1-olibmystuff.so.1.0.1 a.o b.o-lc
이때 주의사항 몇가지를 적어보며 아래와 같다.

*컴파일 결과 생성될 라이브러리를 명기하는 것을 잊지 말것이며 -fomit, -frame, -pointer 등의 컴파일러 옵션은 진짜 필요할 경우외엔 쓰지 말 것. 결과적으로 생성된 라이브러리는 동작하지만 이렇게 하면디버거는 무용지물이 된다.

*-fpic가 아닌 -fPIC를 사용하여 코드롤 생성시켜야 한다.(-fpic를 쓸 경우 분 기점에서 큰 위치변화가 필요할경우 완전한 위치 독립형 코드를 얻을수 없다.)

'Unix Linux' 카테고리의 다른 글

[WIN] 병목현상 측정을 위한 핵심 카운터  (0) 2005.10.19
[펌] 유닉스 보안 4  (0) 2005.05.31
[펌] 유닉스 보안 2  (0) 2005.05.31