2011-01-12 5 views
5

distcc를 사용하여 집에서 작은 빌드 클러스터를 설정하려고합니다. 2 개의 x64 시스템과 1 개의 i686 시스템이 있습니다. 모든 시스템은 Ubuntu 10.10을 실행하며 최신 버전입니다. 빌드를 시작하는 시스템은 x64입니다. Distcc는 두 x64 시스템간에 잘 작동하지만 i686 시스템에 전송 된 모든 빌드 작업은 실패합니다.distcc로 우분투의 i686 시스템에서 x86_64를 크로스 컴파일

지금까지 : 그 시스템에서 g ++에 대한 multilib 패키지를 설치 한

  • . 로컬에서 x64로 크로스 컴파일 할 수 있습니다 g++ -m64
  • /usr/lib/distcc/g++의 링크가 explicity가 -m64 매개 변수를 설정하는 스크립트를 가리 키도록 변경되었습니다.

의견이 있으십니까?

+0

오류의 구체적인 증상은 무엇입니까? –

+0

시스템은 꽤 일반적이었습니다. 시작한 시스템은 32 대의 시스템에 오류가있어 로컬에서 빌드하려고 시도했다고보고했습니다. 로컬로 구축 할 때마다 작동하므로 32 비트 컴퓨터는 마침내 "블랙리스트"에 기록됩니다. –

답변

5

더 많은 연구 후 다시 일을 시도하는

GCC는 page describing the i386 and x86-64 options 있습니다. -m64 플래그는 64 비트 코드를 생성하라고 지시하지만 올바른 명령어 세트를 사용하려면 -march=i686 또는 -march=k8 또는 이와 유사한 CPU 유형을 지정해야합니다.

distcc는 GCC 명령 행 플래그를 보내므로 로컬로 실행중인 distcc 명령에 이들을 추가하고 플래그 설정을 위해 원격 스크립트를 생략해야합니다.

로컬 x64 컴퓨터에서 distcc없이 아키텍처 플래그를 테스트하는 경우 g ++ 만 있으면 distcc를 사용할 때 올바른 바이너리를 제공해야합니다.

+0

나는 확실히 x86에서 64 비트 빌드를 얻기 위해'-m64'를 사용했습니다. –

+0

Arghhh ... 너무 간단합니다. 그것을 작동하게하기 위해 (빌드를 시작한 x64 머신에서) CFLAGS와 CXXFLAGS를 -m64로 설정했습니다. 감사! –

관련 문제