2 augusti, 2019 Inopto_AB

크로스 컴파일 예제

공구 체인은 여러 가지 방법으로 달성될 수 있습니다. 가장 쉬운 방법은 의심할 여지 없이 .deb 또는 .rpm 패키지를 찾아 호스트 시스템에 도구 체인을 설치하는 것입니다. 예를 들어 대상 아키텍처가 라즈베리 파이이고 호스트가 PC인 경우 가능합니다(자세한 내용은 https://github.com/raspberrypi/tools 참조). 바이너리 패키지를 사용할 수 없는 경우 사용자 지정 도구 체인을 처음부터 컴파일해야 할 수 있습니다. 이 경우 crosstool-ng와 같은 도구가 도움이 될 수 있습니다 (http://crosstool-ng.org/#introduction) 예제를 통해 이해하기가 더 쉬울 수 있습니다. 크로스 컴파일이 아닌 일반 사례부터 시작해 보겠습니다. 이러한 경우 이 세 컴퓨터는 모두 동일합니다. 지금까지 간단한. 구성이 완료되면 일반적인 방법으로 닌자 호출을 통해 컴파일이 시작됩니다. 프로젝트를 빌드하기 위해 소위 makefiles를 사용하는 GNU 메타 빌드 도구 (메타 빌드 도구라고 말하고 싶습니다)인 call make. 이것은 실제로 컴파일 및 연결 단계를 수행tl/dr 요약은 다음과 같습니다: 정기적인 교차 컴파일을 수행하는 경우 build_machine 및 host_machine에대해서만 신경을 쓰게 됩니다.

target_machine을 모두 무시하면 99%의 시간이 정확합니다. 컴파일러 및 유사한 도구만 대상 컴퓨터에 대해 신경을 사용합니다. 실제로 소위 ”다중 대상” 도구의 경우 대상 컴퓨터가 빌드 시 다른 도구와 마찬가지로 수정할 필요는 없지만 런타임에 선택되므로 target_machine은 여전히 중요하지 않습니다. 요구 사항이 더 복잡하거나 실제 세부 사항에 관심이 있다면 계속 읽으십시오. 교차 컴파일러는 컴파일러가 실행 중인 플랫폼이 아닌 다른 플랫폼에 대해 실행 코드를 만들 수 있는 컴파일러입니다. 예를 들어 Windows 7 PC에서 실행되지만 Android 스마트폰에서 실행되는 코드를 생성하는 컴파일러는 교차 컴파일러입니다. 교차 컴파일 GCC는 대상 플랫폼의 C 표준 라이브러리의 일부를 호스트 플랫폼에서 사용할 수 있어야 합니다. 프로그래머는 전체 C 라이브러리를 컴파일하도록 선택할 수 있지만 이 선택은 신뢰할 수 없습니다. 대안은 c 소스 코드를 컴파일하는 데 필요한 가장 중요한 구성 요소만 포함하는 작은 C 라이브러리인 newlib를 사용하는 것입니다. Linux의 ld 명령은 필요한 도구인 링커를 호출합니다.

그러나, 내 지식의 최선을 다해 거의 사람들이 명시적으로 ld를 사용합니다. gcc를 호출하고 실제 링커를 호출하는 것이 훨씬 쉽습니다.이 방법은 복잡성을 많이 숨길 수 있기 때문에.

Kontakta oss!