ubuntu / debian의 link option 변화 SW

ref : https://wiki.ubuntu.com/NattyNarwhal/ToolchainTransition

debian은 다음 버전, ubuntu는 110.4에 들어왔다가 rollback되고 다음 11.10부터 적용되는 내용입니다.

기존에는 shared library에 대해 indirect linking이 허용되어서, A -> B로 의존성이 있고, B가 aa() 함수를 제공하면 실행파일이 A만 link하고 aa()를 사용해도 문제가 없었습니다. 이번에 -no-copy-dt-needed-entries 옵션이 기본적으로 켜져서 indirect linking이 허용되지 않고 linking error가 나옵니다.

그리고 추가로 -as-needed option이 켜져서 shared library를 명시적으로 link하게 해도 실제로 해당 library의 함수가 사용되지 않으면 binary에는 해당 shared library에 대한 의존성이 없어집니다.