Linux에서 gcc 크로스 컴파일러를 구축할 때 어떤 "--target"이 지원되는지와 이를 지정하는 정확한 키워드를 어떻게 알 수 있습니까?

Linux에서 gcc 크로스 컴파일러를 구축할 때 어떤 "--target"이 지원되는지와 이를 지정하는 정확한 키워드를 어떻게 알 수 있습니까?

x86-64 시스템에서 실행되어야 하는 실행 파일을 생성하기 위해 gcc 컴파일러를 빌드하려고 합니다. 실제로 내 컴퓨터에서는 기존 64비트 gcc 컴파일러를 사용하고 있습니다. 이것은 중복되지만 학습 목적으로 수행합니다.

문제는 --target 옵션을 지정하는 방법을 모른다는 것입니다. 거기에는 무엇을 입력해야 하나요? "x86-64"만 입력해도 되나요?

크로스 컴파일러가 소스 코드를 컴파일하기 위해 다른 x86-64비트 시스템에서 실행되어야 하는 x86 시스템용 실행 파일을 생성하도록 하려면 어떻게 해야 합니까? 대상과 호스트를 설정하려면 어떤 키워드를 사용해야 합니까?

호스트 및 대상 시스템이 지원하는 아키텍처와 이를 지정하는 올바른 명령을 지정하는 gcc 매뉴얼이 있는지 알고 싶습니다.

답변1

지원되는 대상 아키텍처에 대해 알아보려면 확인해야 합니다.configure그리고config.sub빌드하려는 모든 GCC 소스에서. 또한 일치하는 binutils 및 C 라이브러리가 필요합니다.GCC 설치 매뉴얼컴파일러 구성 및 빌드와 관련된 단계에 대한 세부 정보를 제공합니다.

아키텍처 외에도 대상 운영 체제 및 라이브러리도 결정해야 하므로 GNU C 라이브러리가 있는 x86_64의 경우 --target=x86_64-linux-gnu더 짧은 별칭이 존재하며 다음을 실행하여 config.sub해당 항목을 확인할 수 있습니다.

$ src/config.sub x86_64-linux
x86_64-pc-linux-gnu

따라서 ./configure --target=x86_64-linuxx86_64-linux-gnu동일합니다 x86_64-pc-linux-gnu.

일단 구성하고 빌드하면 구성된 대상에서 실행될 수 있는 프로그램을 빌드하는 컴파일러를 얻게 됩니다. 컴파일러 자체는 구성된 호스트에서 실행됩니다. 일반적으로 말하면 대상만 지정해야 합니다.크로스 컴파일러는 크로스 빌드될 수 있습니다(이를 크로스 빌드라고 합니다).캐나다 십자가), 하지만 크로스 컴파일을 막 시작했다면 지금은 따로 두어야 합니다.

관련 정보