Operating System

[System Software] gcc, compiling, linking, libraries

Sara.H 2021. 2. 13. 13:47

참고 강의자료

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 : extract
  • t : 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 이다)
  • 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

Shared library 만들기

  • Building shared library
    • gcc 에 몇가지 옵션을 주어서 만들 수 있다.
    • 링크 참조
  • Upgrading shared library
    • put new library into /lib directory
    • run ldconfig command

참고 강의자료 2