-Wl부터 소개한다


https://stackoverflow.com/questions/6562403/i-dont-understand-wl-rpath-wl


1. c source code -> gcc -> obj

2. obj -> ld -> elf

위와 같이 링킹과정을 분리하는 것이 아니라


src -> gcc -> elf

위와 같이 한번에 컴파일할 경우, linking 옵션을 주기 위해서는 -Wl 옵션이 필요하다

아래는 모두 동일한 커맨드이다 (직접 실행해보진 않았으므로 차이가 있을수도 있다)

여담으로, gcc 옵션 중 W로 시작하는 옵션들이 많이 있는데 서로 관련이 있지는 않은듯 하다

예를 들면 -Wall은 warning 옵션 -Wl은 linking option임을 gcc manpage에서 확인할수 있다


gcc -Wl,-rpath,.

gcc -Wl,-rpath -Wl,.

ld -rpath .


---


다음은 -rpath다

https://stackoverflow.com/questions/8482152/whats-the-difference-between-rpath-and-l


runtime library path의 줄임말로, shared object(.so)파일의 path를 입력한다

그러면 프로그램 실행 시 입력한 path를 search한다는듯 하다


---


<-rpath vs -L>

우선 -L은 그 디렉토리 안에 모든 라이브러리들에 대해 -l을 부여하는 옵션이다

이 둘의 차이는 -rpath는 so 파일만, -L은 .a or .so 파일을 모두 linking 하는 것 같다

(이 또한 manpage와 서치를 통한 내용일 뿐 직접 실행해보진 않았으므로 다소 차이가 있을 수 있다)



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/