GCC 대신 Intel의 컴파일러로 전체 Linux 시스템을 컴파일 할 수 있습니까?


26

호환성 문제가 있습니까?

인텔 기반 시스템의 경우 인텔 컴파일러가 GCC보다 더 나은 작업을 수행 할 수 있다는 인상을 받았습니다. 아마도 이것을 시도한 배포판이 이미 있습니까?

젠투를 사용하면 이것이 매우 간단하다고 생각합니다.


4
내가 전에 찾은 좋은 정보가 여기 있습니다! gentoo-wiki.info/HOWTO_ICC_and_Portage
barrymac

5
전제에 대해 궁금해해야합니다. "더 나은 작업"을 수행하는 컴파일러를 어떻게 측정합니까? 더 빠른 코드 실행? 작은 바이너리? 컴파일 시간이 더 빠릅니까?
Eli Heady

1
나는 더 빠른 코드에서 작은 바이너리를 두 번째로 측정 할 것이지만, 극적이지 않으면 바이너리 크기에 대해서는별로 신경 쓰지 않을 것입니다. 또 다른 문제는 에너지 효율
barrymac

답변:


29

icc로 모든 것을 컴파일 할 수는 없습니다. 많은 프로그램들이 C 언어에 대한 GCC 확장을 사용합니다. 그러나 인텔은 이러한 확장을 대부분 지원하기 위해 많은 노력을 기울였습니다. 예를 들어, 최신 버전의 icc는 Linux 커널을 컴파일 할 수 있습니다.

젠투는 소프트웨어를 비정상적으로 재 컴파일하려는 경우에 가장 좋은 방법입니다. 젠투 위키icc 페이지 는 주요 장애물을 설명합니다.

먼저 기본 젠투 설치를하고 emerge icc. 시스템에 icc로 컴파일 된 바이너리가있는 경우 icc를 나중에 제거하지 마십시오. icc는 /opt; 루트 파티션에없는 경우 부팅시 사용 된 프로그램이 icc로 컴파일 된 경우 icc 라이브러리를 루트 파티션에 복사해야합니다.

/etc/portage/bashrc좋아하는 편집 옵션을 설정 하고 선언하십시오. 다른 컴파일러로 다른 패키지를 빌드하는 것을 지원하는보다 철저한 스크립트 는 Gentoo 위키 를 참조하십시오 (icc는 일부 패키지를 깨뜨리기 때문에 필요합니다).

export OCC="icc" CFLAGS="-O2 -gcc"
export OCXX="icpc" CXXFLAGS="$CFLAGS"
export CC_FOR_BUILD="${OCC}"

13

확실히 흥미로운 경험이 될 것입니다. 그러나 대체 컴파일러를 사용하여 전체 Linux 배포판을 다시 컴파일하는 것은 쉽지 않습니다. 많은 필수 패키지는 GCC 및 기타 GNU 툴체인 유틸리티에 의존합니다.

하이브리드를 생성하기 위해 GCC가 필요하지 않은 패키지에는 대체 컴파일러를 사용하는 것이 가능합니다. GCC 종속 패키지를 컴파일러로 빌드 할 수있는 다른 패키지로 대체 할 수 있지만 대부분의 경우 대안이 많지 않습니다. 해당 대안이 의도 한 용도에 적합한 지 여부를 결정해야합니다.

그러나 실제 질문은 가치가 있을까요? 임베디드 시스템을 구축하려는 경우 대체 컴파일러가 더 작은 바이너리를 생성 할 수 있습니다. 컴퓨팅 클러스터를 구축하는 경우 코드 실행 속도가 빨라질 수 있습니다. 데스크톱을 구축하는 경우 훌륭한 학습 경험을 얻을 수 있습니다.

결국 (데스크톱을 구축한다고 가정 할 때) 많은 배포판 사용자가 궁극적으로 결정하는 것이 사실이라는 것을 알게 될 것입니다. 그것은해서는 안된다고 말하는 것이 아닙니다. 재미있을 수 있습니다. 그렇게하면이 사이트는 답을 찾고 노력을 문서화하기에 좋은 장소가 될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.