리눅스 라이브러리의 생성자와 소멸자를 등록하는 방법은 2가지가 있다.
라이브러리 생성자나 소멸자는 라이브러리 전역에서 쓰이고 한번만 초기화 되어야 하는 객체에 사용하라. 예를 들어 전역적으로 쓰이는 변수, mutex 등을 말한다.
추천
void __attribute__ ((constructor)) my_init(void) |
생성자(constructor) 는 dlopen 이 반환되기 전이나 혹은 라이브러리가 로드 될 때에 실행된다. 중요 : 공유 라이브러리는 컴파일시 -nostartfiles 혹은 -nostdlib 옵션이 들어가면 안된다. 만약 이 argument들이 사용되었다면 생성자나 소멸자는 실행되지 않는다. |
비추천
void _init(void) |
gcc 옵션에 -nostartfiles 를 추가한 상태로 라이브러리를 만들어야한다. 그렇지 않으면 multiple-definition 에러가 발생할 것이다. |
출처:http://onecellboy.tistory.com/263
'내밥줄 > 리눅스' 카테고리의 다른 글
QEMU 가상 USB, CD (0) | 2015.09.03 |
---|---|
[펌]QEMU 이미지 마운트하기 (0) | 2015.04.21 |
Ubuntu 12.04 vnc (0) | 2014.04.24 |
오프라인 apt-get 설치 (0) | 2014.04.03 |
Fedora 19 로그인 시 회색 화면만 보이는 경우 (0) | 2014.04.02 |