컴파일 환경과 실행 환경의 LIBC 버젼이 다른 경우 어떻게 되나요?

trymp의 이미지

liuux x86_64bit 을 기준으로 해서요.

A , B 두대의 PC 가 있다고 가정할 때,

A machine : /lib64/libc-2.12.90

B machine : /lib64/libc-2.15.so

PC A 환경에서 컴파일한 실행파일을 PC B 환경에서 실행시킬 때,

side effect 나 bug 같은 것이 발생할 수 있나요?

혹시 문제가 생기지 않을까 걱정되는 마음에 글을 올려 봅니다.

답변 주시면 감사하겠습니다.

익명 사용자의 이미지

낮은 버전의 glibc 를 기반으로 빌드했을 경우 더 높은 버전의 라이브러리로
실행하여도 문제가 되지 않습니다. 다만 2.x 에서 빌드한 것을 가지고
3.x (나중에 나올 경우) 에서 실행한다고 하거나 하면 문제가 됩니다.

물론 side effect나 bug 가 발생할 가능성이 완전히 0이라고 할 수는 없으나
glibc 프로젝트에서 그렇게 얘기하는 한 일단 그렇게 가정해도 무방합니다.
만약 문제가 생기고 이게 글로벌한 문제라면 버그 리포팅하면 됩니다.

https://github.com/gnutel/embedded/wiki/Glibc-%EB%9E%80%3F

trymp의 이미지


덕분에 배위갑니다.

bushi의 이미지

파고들어가면, 머리가 좀 아픕니다.
https://www.kernel.org/pub/software/libs/glibc/hjl/compat/GNUvers.txt 인데요,
.o 나 .a 를 배포하는 경우에 https://www.kernel.org/pub/software/libs/glibc/hjl/compat/ 같은 상황에 부딪힐 수 있습니다.

아무튼... 뭔가 이상이 생길만한 상황이면 실행도 안되고, 로드도 안되고, 링크도 안되도록 되어 있다는 것을 기억해두시면 됩니다.