2017-10-11 2 views
0

안녕하세요, 리눅스에서 wxWidgets GUI 애플리케이션을 빌드하면 빌드가 잘됩니다. 심지어 실행할 수도 있고 예상대로 작동합니다. 나는 다른 우분투 컴퓨터에 바이너리를 복사하여 실행하려고하면이 오류를 얻을 :Wxwidgets가 다른 컴퓨터에서 실행중인 바이너리를 실행합니다.

./app2: error while loading shared libraries: libwx_baseu_unofficial-3.1.so.0: cannot open shared object file: No such file or directory 

을 난 아직도 문제를 얻을에 걸쳐 lib 디렉토리를 복사하는 경우에도. 왜 외부 라이브러리에 종속되어 있으며 다른 컴퓨터에서이 라이브러리를 설치하지 않도록하려면이 문제를 어떻게 해결할 수 있습니까? 내가 정적으로 연결하려고 할 수 있지만 다른 사람들이 당신이하지 않는 것이 좋습니다 가정 해 봅시다.

당신은 당신이에 바이너리를 복사 머신에 전체 wxWidgets에 런타임/공유 라이브러리를 설치해야 댄

답변

0

, 감사합니다. 이것은 aptitude를 사용하는 요점이다. 각 바이너리 패키지는 함께 설치되는 의존성 목록을 가지고있다.

이것을 극복하려면 정적으로 바이너리를 링크해야합니다. 현재 공유 라이브러리를 사용하고 있습니다. 공유 링크는 외부 라이브러리와 관련이 있습니다. ".so"는 공유 객체를 의미합니다. 정적 아카이브 라이브러리에 링크해야하며, 종종 ".a"로 끝납니다. 전형적으로 aptitude가 제공하는 개발 패키지는 이들을 제공하지 않으므로 wxWidgets을 직접 컴파일하여 제공해야 할 것이다. 모든 wxWidgets 다운 스트림 종속성도 정적으로 링크하고 컴파일해야합니다. 이것은 정적 링크의 주요 단점입니다.

Holy Build Box 같은 것을 볼 수도 있습니다.

+0

답변 해 주셔서 감사합니다. .deb 파일에서 wxwidgets가 문제를 해결할 수있는 의존성을 요구할 수 있다고 생각합니까? –

+0

컴파일 된 버전이 종속성 검사에서도 정의되어 있는지 확인해야합니다. –

+0

나는 wxWidgets의 사용자 정의 컴파일 버전과 링크 된 것을 만들었습니다. 수정되지 않았지만 찾는 라이브러리는 "비공식"입니다. "비공식적 인"libs를 다른 우분투 PC에 복사했는데 시스템에서 여전히 라이브러리를 찾을 수 없다고 말했습니까? –