-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와 서치를 통한 내용일 뿐 직접 실행해보진 않았으므로 다소 차이가 있을 수 있다)
'Language' 카테고리의 다른 글
cmake 변수 설정방법 (0) | 2017.12.07 |
---|---|
cmake clean command (0) | 2017.12.06 |
[git] merge, git pull, branch 팁/노하우 (0) | 2017.12.05 |
[git][Unity] Github에 Unity Remote Repository 생성하기 (0) | 2017.12.05 |
[git] github에 push(commit)하는 command (0) | 2017.12.04 |
WRITTEN BY
- hojongs
블로그 옮겼습니다 https://hojongs.github.io/