2009-11-21 2 views

답변

6

첫 번째 사항 : 컴파일러 버전과 관련된 모든 대답이 잘못되었습니다. 중요한 것은 연결 (물론 아키텍처)입니다. (예를 들어, 자신의 /usr/local/* 또는 /opt/* 디렉토리에) 시작 시스템에 .so를 파일을 통해 복사 할 경우

은 다음 LD_PRELOAD 환경 설정을 사용하여 의도 된 실행 파일을 실행 해보십시오. 링커 (ld-linux.so)가 두 기호 사이의 모든 기호를 해결할 경우 프로그램이로드되어 실행되어야합니다.

기존 시스템 라이브러리를 덮어 쓰지 않고 LD_ * /etc/ld.so.preload (chroot?) 마법을 사용하여 대상 실행 파일을이 파일에 링크하는 것만 큼 합리적이고 안전해야합니다. 라이브러리.

하지만 패키지 관리 문제가 있습니다. 우분투와 레드햇 모두 훌륭한 패키지 관리 도구가 있습니다. 패키지 관리에 관한 질문을 할 수있는 적절한 곳은 ServerFault입니다. 또는 수퍼 유저, 정확히는 SO가 아님)

+0

고마워. 내가 LD_PRELOAD 등을 읽고, 내가 어떤 진전을하는지 보자. 그를 설치하기위한 패키지 빌드를 고려해보십시오. –

0

나는 Xinus에 가입한다. IMHO 컴파일러는 우분투와 RHEL의 경우 gcc가 될 것이며 glibc와 밀접하게 결합됩니다. 따라서 두 시스템에서 동일하다면 대부분의 경우와 다를 바 없습니다.

그러나 추측 이유 (라인 몇 주)과 작은 테스트 드라이브를 할 것이 더 큰 프로그램이 "적대적"환경 :

0

가장 좋은 솔루션을 실행할 수있는 좋은 기회가보다 실행중인 경우 당신의 공동 개발자에게 코드를 제공하는 것입니다, 그리고 그것을 컴파일하자 !!!!

당신은 몇 가지 솔루션

  • 컴퓨터에 자신의 GCC 버전을 설치하고 모두가 작업하는 경우가

당신은 확인해야 컴파일과 동일한 버전으로 자신의 GCC를 업그레이드해야 동일한 아키텍처 32 비트 또는 64 비트.

제 생각에는 동일한 글리프를 사용하지 않았으므로 몇 가지 문제가있을 수 있습니다. .

2

가능성 :이 질문은 방금 작동했으면하지 않았습니까?

DistroWatch에 따르면 Ubuntu 9.10은 glibc-2.10.1을 사용하고 RHEL-5.4는 glibc-2.5을 사용합니다. 즉, 라이브러리가 버전이 GLIBC_2.6 이상인 모든 심볼을 참조하면 RHEL-5에서 작동하지 않습니다.

당신이 (어떤 것들과) 이러한 기호를 사용 여부를 당신이 말할 수 : 출력이 다음 라이브러리는 RHEL-5에서 작동하지 않습니다, 비어 있지 않은 경우

readelf -s /path/to/your/library.so | egrep 'GLIBC_2.([6-9]|10)' 

.

autopackage을 사용하여 RHEL-5와 호환되는 라이브러리를 빌드 할 수 있습니다.

+0

readelf의 출력을 매우 좋아했습니다 (Windows 플랫폼의 dumpbin과 유사 함). 덧붙여 말하면 위의 명령을 실행하면 "문제가되는 문자열"과 일치하지 않으므로 이론적으로는 작동해야합니다. 그러나 귀하와 다른 사용자가 제안 했으므로 패키지 관리자 사용을 고려할 것입니다. –

관련 문제