0

C로 실행 파일을 개발하고이 실행 파일을 공유하여 다른 대상 시스템에서 실행할 수 있습니다. 최 신 시스템은 Linux 64Bit이고 대상 시스템은 Linux ARM 시스템입니다. 나는 공유 라이브러리를 사용하여 게으름 때문에 그것을 개발했지만, 공유 객체가 없기 때문에 그것을 공유한다면 확실히 작동하지 않을 것이다. 정적 라이브러리를 제공하지 않았기 때문에 소스에서 라이브러리를 빌드하여 공유 라이브러리에서 정적 라이브러리로 변경하려고 시도했지만 프로젝트를 빌드하려고 할 때 정의되지 않은 참조 오류가 발생합니다. 누락 된 헤더 파일과 관련이 있어야합니다. 그러나 헤더 파일을 빌드 프로세스에 포함 시키면 내가 배포 할 때와 동일한 문제가 발생합니다.C 링크 라이브러리 독립 빌드

라이브러리를 사용할 수 있지만 독립적 인 실행 파일을 빌드 할 수 있습니까? 시스템을 대상으로 실행 파일을 설치하거나 복사 할 필요가 없습니다.

크로스 컴파일이 정상적으로 작동하지만 라이브러리가 문제를 만듭니다.

+0

C 소스 코드 공유를 고려해 보셨습니까? –

답변

0

당신이 라이브러리 내에서 기능을 사용하는 경우의 옵션이 하나 동적 라이브러리를 사용하여 (그것이 설치되어 있어야합니다, 또는 직접 설치)

또는 프로그램과 함께 얻을 것이다 정적 라이브러리를 사용 (정적 라이브러리를 빌드 할 수있는 경우)

정적 라이브러리를 사용하여 빌드하는 데 자주 발생하는 문제는 해당 라이브러리가 종속되어있는 다른 라이브러리와 정적 링크를해야 할 수도 있다는 것입니다.

0

교차 호환성을 이야기 할 때 정적 연결을 피하기를 원합니다. 이러한 라이브러리는 ARM 시스템에서 이미 빌드되고 디버깅 될 수 있기 때문입니다. 해당 아키텍처의 이미 작동하는 공유 라이브러리를 시스템에 설치하기 만하면 프로그램이 정상적으로 작동합니다.

또한 공유 라이브러리가 기타 공유 라이브러리에 종속되어 있다는 문제가 있습니다. 그것들 역시 재건해야 할 것입니다. 하루가 끝날 때까지 3GB의 실행 파일을 갖게됩니다.

포장과 연습을 권장합니다 (아, 아뇨). 의존 라이브러리를 설치할 .deb 또는 .rpm을 만듭니다.