static 컴파일 관련 문의

hernian의 이미지

안녕하세요

질문이 있어 문의 드립니다.

현재 Linux 서버 두대가 있다고 하겠습니다.

특정 source를 gcc로 컴파일 하면 A에서 컴파일한 프로그램은 해당 서버에서 잘 돌아 가는데 B에서는 돌아가지 않습니다.
반대의 경우도 바찬가지고요

이유는 사용하는 library 가 A는 32bit, B는 64bit gblib 를 사용하고 있어서 그렇다고 들었습니다.

이럴때에 A서버에서 static 하게 컴파일 해서, A에서 컴파일 한 프로그램을 B에서 사용할 수 없을까 해서 문의 드립니다.

김정균의 이미지

x86_64 architect 에서는 32bit binary 구동이 가능합니다. 그러므로, 32bit library가 64bit system에 설치가 되어 있으면 문제는 없습니다.

또는 문의 하신대로, 완전 static 하게 빌드를 할 수 있다면 양쪽다 구동이 가능 합니다. 완전 static 하다는 것은 해당 binary를 ldd 로 보았을 경우 다음과 같은 결과가 나오는 것입니다.

shell> ldd some.binary
   not a dynamic executable