🏷️링커 옵션
- 매우 중요한 옵션이다.
- 다른 사람이 작성한 프로그램을 컴파일하려고 하면 링크 오류가 자주 발생한다.
📌-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 시리즈는 마무리 됐다.