gcc
usage : gcc [options] FILE ...
- C 컴파일러 (C++ 컴파일러는 g++이다)
- 파일 이름은 반드시 .c 로 끝나야 한다.
- 컴파일 결과 실행 파일 이름이 a.out 이 된다.
-o filename
위와 같이 옵션을 주면 실행파일 이름을 filename 으로 한다.
cat > a.c
#include <stdio.h>
int main(){
printf("linux is exciting\n");
}
gcc -o exciting a.c
Library 만들기 및 사용
- (static) library file 은 .a로 끝난다.
ar
커맨드를 사용해서 라이브러리 만들 수 있음
ar rcs libname.a a.o b.o c.o
r
: include this (replace if exist)c
: silently (if not exist)s
: maintain table (symbol : file)x
: extractt
: print content of archive
Static Library 만들기 및 사용
- Library name convention
- libhello.a, libc.a, libm.a
- Usually libraries are found under
- /lib, /usr/lib ...
- Linking
- gcc my.c -lx ... (gcc searches /lib/libx.a for linking)
- libc.a is default for gcc
- full pathname if not in system library directory
Static library vs. Shared library
static library
- functions are copied into executable file during
gcc
time - binding : compile time
- suffix :
.a
(archive 의 a 이다)
- functions are copied into executable file during
shared ibrary
- functions are not copied during
gcc
time (Just mapped!) - During runtime, loads on demand from library (shared)
- binding : runtime
- suffix :
.so
(shared object) - with version number :
.so.5.1.12
- default linking :
/ilb/libc.so
- functions are not copied during
Shared library 만들기
- Building shared library
- gcc 에 몇가지 옵션을 주어서 만들 수 있다.
- 링크 참조
- Upgrading shared library
- put new library into /lib directory
- run
ldconfig
command
'Operating System' 카테고리의 다른 글
[OS] Memory Management (2) (0) | 2021.12.24 |
---|---|
[OS] Memory Management (1) (0) | 2021.12.24 |
[System Software] System Software & Program Execution (0) | 2021.02.12 |
[System Software] MIPS Procedure Call (Cont'd) (0) | 2021.02.12 |
[System Software] 프로그램의 메모리 주소 공간 구조 (0) | 2021.02.08 |