![Linux에서 gcc 크로스 컴파일러를 구축할 때 어떤 "--target"이 지원되는지와 이를 지정하는 정확한 키워드를 어떻게 알 수 있습니까?](https://linux55.com/image/184257/Linux%EC%97%90%EC%84%9C%20gcc%20%ED%81%AC%EB%A1%9C%EC%8A%A4%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EB%A5%BC%20%EA%B5%AC%EC%B6%95%ED%95%A0%20%EB%95%8C%20%EC%96%B4%EB%96%A4%20%22--target%22%EC%9D%B4%20%EC%A7%80%EC%9B%90%EB%90%98%EB%8A%94%EC%A7%80%EC%99%80%20%EC%9D%B4%EB%A5%BC%20%EC%A7%80%EC%A0%95%ED%95%98%EB%8A%94%20%EC%A0%95%ED%99%95%ED%95%9C%20%ED%82%A4%EC%9B%8C%EB%93%9C%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%95%8C%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
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-linux
와 x86_64-linux-gnu
동일합니다 x86_64-pc-linux-gnu
.
일단 구성하고 빌드하면 구성된 대상에서 실행될 수 있는 프로그램을 빌드하는 컴파일러를 얻게 됩니다. 컴파일러 자체는 구성된 호스트에서 실행됩니다. 일반적으로 말하면 대상만 지정해야 합니다.예크로스 컴파일러는 크로스 빌드될 수 있습니다(이를 크로스 빌드라고 합니다).캐나다 십자가), 하지만 크로스 컴파일을 막 시작했다면 지금은 따로 두어야 합니다.