C 컴파일에 대한 기본적인 지식이 있지만 몇 가지 일반적인 크로스 컴파일 질문에 대한 답을 얻을 필요가 있습니다. 제 경우에는 ARM 단일 보드 컴퓨터에서 실행될 Fedora Linux 상자에서 프로그램을 크로스 컴파일하려고합니다.C에 대한 교차 컴파일 요구 사항
첫 번째 질문은 헤더에 관한 것입니다. ARM 리눅스 도구 패키지를 다운로드했으며 include 디렉토리에 stdio.h와 같은 헤더 파일이 들어 있습니다. 내가 크로스 컴파일 할 때 필자는이 "target"include 디렉토리를 내 시스템 include 디렉토리와 반대로 사용해야합니까? 또는/usr/include와 같은 내 시스템의 include 디렉토리를 가리 키는 것이 좋습니까? (이 헤더 파일은 필자와 다를 경우 다를 수 있습니다.)
헤더 파일이 없으면 어떻게됩니까? 제 경우에는 ARM 보드에서 cURL 라이브러리를 활용할 계획입니다. 대상 아키텍처에 대해 걱정하지 않고 다운로드 한 컬 소스 패키지에있는 포함 디렉토리를 가리킬 수 있습니까? 그렇다면 내 첫 번째 질문과 관련이 없음을 의미합니까?
라이브러리에 정적으로 링크하고 싶습니다. 이 정적 라이브러리가 대상 ARM 플랫폼에 대해 컴파일되기 전에이 작업이 수행되어야합니까? 또는 내 시스템에 직접 설치된 정적 라이브러리를 사용할 수 있습니까 (크로스 컴파일 프로세스가 비즈니스를 처리하기를 바랍니다).
라이브러리에 동적으로 링크하기로 결정한 경우 타겟 시스템에 ARM 용으로 컴파일 된이 라이브러리가 있고 ARM 보드의 LD_LIBRARY_PATH 디렉토리 중 하나에 설치해야합니다. 맞습니까?
도움 주셔서 감사합니다.
포인트 1로 확장하려면 : 크로스 컴파일러 환경은 벌써'#include'이 ARM 버전의 헤더를 참조하도록 설정되어 있어야합니다 (즉,/usr/포함'). –
caf
두 번째 항목에 대해 자세히 설명해 주시겠습니까? 나는 특히 "cURL 라이브러리가 필요하므로 크로스 컴파일러를 사용해야합니다."라고 혼란 스럽습니다. 문장. 첫 번째 문장에서이 단계를 이미 다루지 않았습니까? – Burak
@Burak : ARM 크로스 컴파일러가 cURL과 함께 제공되는 것은 거의 없습니다. 그렇지 않으면 컴파일과 링키지가 작동하도록 미니 "루트 파일 시스템"을 만들어야합니다.buildroot와 OpenEmbedded 같은 프레임 워크가 존재합니다 - 교차 컴파일은 고통이 될 수 있습니다 –