Shared Object Link 문제

sefirot의 이미지

Redhat Enterprise Linux 3 Workstation과 Redhat Enterprise Linux 5 Desktop 버전을 사용 중입니다.

Shared object를 사용하는 C++로 된 프로그램을 사용 중인데 (shared object도 C++로 작성되어 있음)... RHEL3에서 빌드한 프로그램 바이너리를 RHEL5로 가져와서 RHEL5에서 빌드한 so 파일과 링크해 실행시키면 프로그램이 죽습니다.
반면에 so 파일도 RHEL3에서 빌드한 버전을 RHEL5로 가져와서 사용하면 잘 실행되구요.
RHEL3에서 빌드한 so 파일과 RHEL5에서 빌드한 so 파일 간에 source code의 차이는 전혀 없습니다.

어떤 문제 때문에 안되는 것인지... 또 해결 방법은 있는지 답변 좀 부탁드립니다.

cwryu의 이미지

gcc 버전에 따라 C++ ABI도 차이가 있습니다.

애플리케이션도 다시 빌드하는 수 밖에요.