기본적으로 소형 ARM 컴퓨터 인 Raspberry Pi 용으로 크로스 컴파일하려고합니다. 호스트는 Arch Linux를 실행하는 i686 상자가됩니다.Distro 제공 크로스 컴파일러 대 커스텀 빌드
내 첫 번째 본능은 아치 리눅스, arm-elf-gcc-base 및 arm-elf-binutils에서 제공하는 크로스 컴파일러를 사용하는 것입니다. 그러나, 모든 위키와 내가 읽은 글은 사용자 정의 gcc 빌드의 일부 버전을 사용하는 것으로 보입니다. 그들은 자신의 gcc를 요리하는데 많은 시간을 소비하는 것 같습니다. 문제는 gcc를 다른 gcc보다 중요하게 사용하는 이유가 무엇인지 말하지 않는다는 것입니다.
일반 커널 및 응용 프로그램에서 Raspberry Pi 또는 ARM을 빌드 할 때 배포판에서 제공되는 크로스 컴파일러를 사용할 수 있습니까?
ARM 아키텍처 용으로 여러 개의 컴파일러가 필요합니까? 그렇다면 왜 단일 gcc가 모든 x86 변형을 지원할 수 있습니까?
2)라면, gcc의 특정 버전에서 지원되는 대상 하위 집합을 어떻게 추론 할 수 있습니까?
더 일반적인 질문, 일반적인 gcc 빌드에 대해 어떤 일반적인 사용 사례가 필요합니까?
가능한 한 기술적으로 기술하십시오. 이유는 무엇입니까?
예 사전 제작 된 것을 사용할 수 있습니다. gcc 또는 binutils 소스를 다운로드 한 다음 ./configure --help를 실행하여 선택 항목을 살펴보십시오. 사용자 정의 대 사전 빌드에 대해 다를 수 있고 선택할 수있는 옵션이없는 경우 선택 사항을 확인하십시오. 미리 만들어진 사람은 한 사람의 선호도를 사용하는 관습 일뿐입니다. 또한 사용자 정의를 사용하여 특정 버전의 gcc를 사용할 수 있습니다.또한 codesourcery (현재 멘토)와 같은 pre-builts는 여러 가지 이유로 소스에 대한 개선이나 변경이 있습니다 (안정적인 소스가 아닌 대상 코어 또는 운영 체제에 대한 지원 추가 또는 수정). –
sigle gcc가 모든 x68 변형을 지원할 수 있습니다. 성명의 막연한, gcc 2.95는 2012 년 출시 된 x86 기능을 지원할 수 없습니까? 아니. 같은 이유로 여러 x86 배포판이나 응용 프로그램과 함께 사용자 정의 gcc 빌드를 볼 수 있습니다. gcc가 완벽하고 전혀 버그가없고 완료 되었으면 (지원되는 모든 기능, 완료, 버그가없는 경우) 새 프로세서를 추가하는 것 외에 gcc에 대한 업데이트가 없을 것입니까? gcc에서 개발이 끝나고 버그가 없다는 것을 알지 못합니다. –
성공적으로 gnu 기반 크로스 컴파일러를 빌드하면 배포판에 필요한 모든 응용 프로그램이나 드라이버를 빌드 할 필요가없는 작업을 수행 할 수 있습니다. gcc 내부를 파다 보면 덕트 테이프와 베일 링 와이어와 함께 붙어 다니는 못생긴 짐승을 발견 할 수 있습니다. 그 짐승을 길들이는 것을 배우는 데는 상당한 시간이 걸립니다 (단지 각 릴리스를 다시 배워야 만합니다). –