2012-06-04 2 views
0

Google 네트워크가 최근 CentOS 5에서 CentOS 6으로 전환했습니다. gcc로 컴파일 할 때 링크 할 때이 오류를 발견했습니다.CentOS 6에서 이상한 연결 오류가 발생했습니다

/usr/bin/ld: cannot find -lz 
collect2: ld returned 1 exit status 

이제 CentOS5에서 컴파일러가 무시할 것으로 보입니다.

/usr/bin/ld: skipping incompatible /usr/lib/libz.a when searching for -lz 

우리는 크게 수정 된 SCons 컴파일 도구 (http://www.scons.org/)를 사용하고 있습니다. 이 버그를 알 수 없으며 어디서부터 시작해야할지 모르겠습니다. 이 오류의 유일한 차이점은 한 시스템이 centOS 5를 사용하고 다른 시스템이 centOS6을 사용하고 있다는 것입니다. 누구든지 어떤 제안이 있습니까?

J

+0

일반적인 문제는 개체 파일이 잘못된 아키텍처를 사용한다는 것입니다. '/ usr/lib/libz.a'의 압축을 풀고'file'을 사용하여 아키텍처를 확인하십시오 –

답변

2

나는이 버그를 알아낼 수 없습니다 나는 어디서부터 시작 모른다.

문제는 64 비트 프로그램을 작성 중이며 링커가 32 비트 libz.a를 찾거나 그 반대의 경우입니다. 당신의 CentOS5의 시스템에서

링커이 호환되지 않는 libz.a을 건너 뛰고 다른 곳 다른 libz.a찾습니다.

CentOS6 컴퓨터에서는 다른 컴퓨터가 존재하지 않으므로 오류가 발생합니다.

CentOS5 기계가 사용중인 libz.a을 찾을 수 있습니다. 링크 행에 -Wl,-t 플래그를 추가하고 출력을 확인하십시오. 그런 다음 libz.a이 속한 패키지를 찾아서 CentOS6 시스템에 설치하십시오.

관련 문제