gcc 옵션 -Wl,--no-undefined 에 대해서 성명좀 부탁드리면 안될까요...
글쓴이: oblab / 작성시간: 화, 2016/03/29 - 6:35오후
-Wl 옵션이 링커에 전달될 내용에 대한 옵션을 쓴다라고 하는데요
-Wl,--no-undefined
-Wl,--no-undefined linker option can be used when building shared library, undefined symbols will be shown as linker errors.
이런식으로 검색이 나오는데 undefined 심볼이있을때 에러메시지를 보여주는?
--no-undefined 기능적으로 어떤건가요??
--no-undefined 옵션을 쓰려면 -lpthread도 함께 들어가야 컴파일시 에러가 안나더라구요...
Forums:
참고 : Force GCC to notify
참고 : Force GCC to notify about undefined references in shared libraries
( http://stackoverflow.com/questions/2356168/force-gcc-to-notify-about-undefined-references-in-shared-libraries )
위 페이지에 샘플도 있으니 참고가 될 것입니다.
간단히 적자면, 다른 공유라이브러리(예: libpthread.so)에 의존하는 바이너리를 링크할 때,
[1] 실행파일 형태로 링크하는 경우엔 의존라이브러리(예: -lpthread)를 지정하지 않으면 undefined reference 오류가 생기지만,
[2] 공유라이브러리 형태로 링크하는 경우엔 의존라이브러리(예: -lpthread)를 지정하지 않아도 오류가 안 생깁니다. 링크타임에는 의존성이 해결되지 않더라도 공유라이브러리가 쓰이는 로드타임에는 해결될 것이라고 가정하고 넘어가는 것이죠.
[2]의 경우에도 [1]과 마찬가지로 undefined reference 오류를 뿜게 만드는 옵션이 -Wl,--no-undefined 입니다. pthread를 쓰는 공유라이브러리를 링크한다면, -Wl,--no-undefined 옵션을 쓰려면 -lpthread 옵션도 함께 들어가야 하는 이유도 설명이 되죠.
댓글 달기