2012-02-08 3 views
1

저는 임베디드 시스템에 멍청한 사람입니다. 필자는 ARM9를 사용하는 TS-7390 키트를 사용하고 있습니다. 응용 프로그램을 컴파일 할 수있었습니다. 내 질문은 공유 라이브러리를 사용하여 컴파일하는 방법입니다. 호스트에 도서관이 있어야하나요?공유 라이브러리를 사용한 크로스 컴파일

답변

3

공유 라이브러리의 사용 방법에 따라 다릅니다. 공유 라이브러리가 항상 링크되어있는 것처럼 응용 프로그램을 라이브러리와 함께 컴파일하는 경우 호스트에 필요합니다. 공유 라이브러리가 dlopen을 통해 동적으로로드되는 경우 호스트에 공유 라이브러리가 필요하지 않습니다. 두 경우 모두 대상에 해당 라이브러리가 필요합니다.

1

또한 응용 프로그램을 크로스 컴파일하기 전에 공유 라이브러리를 교차 컴파일해야합니다.

2

간략한 설명 : 예.

이유를 설명해 드리겠습니다. 크로스 컴파일 링 환경을 설정할 때 컴파일러를 링크 할 때 모든 심볼이 해석되는지 검사하기 때문에 헤더 파일과 라이브러리를 모두 사용할 수 있어야합니다.

당신이 상상할 수있는 것처럼, 프로그램이 libc만을 사용하지 않는 순간 크로스 컴파일러로는 충분하지 않습니다. 이 경우 모든 필요한 파일 (헤더, 라이브러리 등)이있는 장소가 필요합니다. 모든 종속성을 다루는 데는 시간이 많이 걸릴 수 있으므로, 종종 어떤 종류의 도구 나 배포판을 사용하는 것이 바람직합니다.

예를 들어, 나는 배울 시간이 조금 걸리는 OpenEmbedded을 사용하지만, 라이브러리를 다루어야 할 때 많은 도움을 줄 수 있습니다.