Linker Option

MySprtlty·2022년 7월 14일
0

gcc

목록 보기
6/6
post-thumbnail

🏷️링커 옵션

  • 매우 중요한 옵션이다.
  • 다른 사람이 작성한 프로그램을 컴파일하려고 하면 링크 오류가 자주 발생한다.

📌-L{라이브러리 디렉터리}

  • 🖇️cf) L stands for Library
  • 라이브러리를 찾을 디렉터리를 설정한다.
  • 헤더 파일의 경로를 지정하는 -I옵션 (대문자 아이)과 혼동하지 말자.
    • 🖇️cf) 라이브러리든 헤더파일이든 경로 지정 옵션은 모두 대문자다.
  • 기본적으로 찾는 라이브러리 경로 외에 라이브러리가 다른 경로에 있다면 -L 옵션으로 지정해야 한다.
  • 🔍ex)
gcc -o test test.c -L/opt/lib -ltest

test.c 내부에서 /opt/lib/libtest.a 파일에 있는 함수를 사용했을 경우 위와 같이 컴파일 한다.

📌-l{라이브러리 이름}

  • 🖇️cf) l stands for library
  • 같이 링크할 라이브러리를 지정한다.
  • 라이브러리 이름은 앞에오는 lib를 제외하고 확장자 이전까지가 라이브러리 명이다. (lib이름.a)
  • 반드시 -I옵션은 소스파일 실행인자 뒤에 와야 한다.
  • 특히, main함수가 있는 파일보다는 무조건 뒤에 와야한다.
  • 🔍ex)
gcc -o test test.c -ltest

📌-shared

  • 정적 라이브러리가 같이 있을 경우 공유 라이브러리를 우선하여 링크한다.
  • default option이다.

📌-static

  • 정적 라이브러리를 우선하여 링크한다.

📌-nostdlib

  • 🖇️cf) nostdlib stands for no standard library
  • libc를 링크하지 않는다.
  • 운영체제나, 부트로더, 드라이버와 같이 표준 C라이브러리를 사용하지 않는 프로그램을 컴파일 할 때 사용한다.

📌-nostartfiles

  • 🖇️cf) nostartfiles stands for no start up files
  • crt1.o같은 start up 파일을 링크하지 않는다.
  • 운영체제나 부트로더 같은 프로그램을 컴파일 할 때 사용한다.

📌-Wl,[링크 옵션들]

  • 링크에서 옵션을 직접 전해주고자 할 때 사용한다.
  • 옵션은 다음과 같다.
    • -s
      • 🖇️cf) s stands for symbol
      • 실행 파일에서 심볼 테이블 제거
  • 🔍ex)
gcc -Wl,-s -o test test.c

이것으로 gcc 시리즈는 마무리 됐다.

0개의 댓글