1. 정적 라이브러리 ( 파일 확장자 : *.a )
: 정적 라이브러리는 컴파일 할때 적용.
유용한 루틴(함수)이 들어있는 파일 square.c과 factorial.c을 가정
1) Object 코드 만들기
$ gcc –c square.c factorial.c
2) 라이브러리 만들기
$ ar r libstuff.a square.o factorial.o
3) 라이브러리 인덱스 만들기
라이브러리 자체에 루틴 정보를 추가하는 과정
$ ranlib libstuff.a
라이브러리 만들기 + 인덱스 만들기 통합 명령
$ar rs libstuff.a square.o factorial.o
4) 각 루틴의 signature가 extern 형태로 선언된libstuff.h 만들기
5) 컴파일
$gcc –I ../include –L../lib –o wibble wibble.c–lstuff –lm
-lstuff : 지금 만든 library 링크 (순서가 앞에 있으므로 이곳의 것이 불림)
-lm : 표준 수학 library 링크
라이브러리와 헤더파일에 대한 이해를 도와주었다.
2. 공유 라이브러리 ( 파일 확장자 : *.so )
생성 절차
재배치코드 생성
-fpic, -fPIC : 공유를 위한 위치 독립적 생성
$gcc –c –fpic square.c factorial.c
공유라이브러리 생성 (인덱스 과정 불필요)
$gcc –shared –o libstuff.so square.o factorial.o 사용
정적인 경우와 동일 (.a와 .so가 둘 다 있으면 .so를 선택 수행)
$gcc –I../include –L../lib –o wibble wibble.c –lstuff –lm
꼭 정적인 라이브러리를 링크 하고자 할 때
$gcc –I../include _L../lib –o wibble wibble.c libstuff.a –lm
ldd 명령: 실행 프로그램이 사용하는 공유 라이브러리 나열
3. 그 외 추가적 명령어
: 정적 라이브러리는 컴파일 할때 적용.
유용한 루틴(함수)이 들어있는 파일 square.c과 factorial.c을 가정
1) Object 코드 만들기
$ gcc –c square.c factorial.c
2) 라이브러리 만들기
$ ar r libstuff.a square.o factorial.o
3) 라이브러리 인덱스 만들기
라이브러리 자체에 루틴 정보를 추가하는 과정
$ ranlib libstuff.a
라이브러리 만들기 + 인덱스 만들기 통합 명령
$ar rs libstuff.a square.o factorial.o
4) 각 루틴의 signature가 extern 형태로 선언된libstuff.h 만들기
5) 컴파일
$gcc –I ../include –L../lib –o wibble wibble.c–lstuff –lm
-lstuff : 지금 만든 library 링크 (순서가 앞에 있으므로 이곳의 것이 불림)
-lm : 표준 수학 library 링크
라이브러리와 헤더파일에 대한 이해를 도와주었다.
2. 공유 라이브러리 ( 파일 확장자 : *.so )
: 공유(동적) 라이브러리는 개발 과정이 용이 하고 라이브러리 변경시 재컴파일 불필요.
하나 이상의 프로세스에서 사용시 메모리 양과 실행 파일 크리 줄여줌.
하나 이상의 프로세스에서 사용시 메모리 양과 실행 파일 크리 줄여줌.
재배치코드 생성
-fpic, -fPIC : 공유를 위한 위치 독립적 생성
$gcc –c –fpic square.c factorial.c
공유라이브러리 생성 (인덱스 과정 불필요)
$gcc –shared –o libstuff.so square.o factorial.o 사용
정적인 경우와 동일 (.a와 .so가 둘 다 있으면 .so를 선택 수행)
$gcc –I../include –L../lib –o wibble wibble.c –lstuff –lm
꼭 정적인 라이브러리를 링크 하고자 할 때
$gcc –I../include _L../lib –o wibble wibble.c libstuff.a –lm
ldd 명령: 실행 프로그램이 사용하는 공유 라이브러리 나열
3. 그 외 추가적 명령어
라이브러리 갱신
# ldconfig
# ldconfig
프로세스 링크된 라이브러리 보기
> ldd [컴파일 된 프로세스]
ex) > ldd mem_rga
ex) > ldd mem_rga
라이브러리 모여 있는 곳
> cd usr/local/lib
라이브러리 경로 설정
# vi /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
( /etc/ld.so.conf.d/의 모든 conf를 include )
참고 사이트 : http://nunorock.egloos.com/977997
라이브러리 경로 설정
# vi /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
( /etc/ld.so.conf.d/의 모든 conf를 include )
참고 사이트 : http://nunorock.egloos.com/977997
'[ Programing ] > OS - Linux' 카테고리의 다른 글
[Linux] 기타 명령어 추가 ( 라이브러리, 시스템 정보 ) (0) | 2011.06.17 |
---|---|
[Linux] .bashrc 설정 (0) | 2010.10.30 |
[Linux] crontab 정의와 사용법 (0) | 2010.10.30 |
[Linux] ssh port 설정 (0) | 2010.10.20 |
[Linux] ssh 비밀번호 없이 접속하기 (0) | 2010.09.10 |