2016-07-22 6 views
0

동적 연결을 사용하여 Marble 플러그인으로 Qt5 응용 프로그램을 배포하려고합니다. Qt5 라이브러리, 플랫폼 플러그인 및 대리석 libmarblewidget-qt5.so.22를 실행 가능한 응용 프로그램과 함께 배치했습니다. 이 응용 프로그램은 대리석이 설치된 우분투에서 작동합니다. 이제 대리석을 설치하지 않고 우분투에서 응용 프로그램을 실행하려고합니다. 내 응용 프로그램을 시작하려면 http://doc.qt.io/qt-5/linux-deployment.html의 시작 스크립트를 사용하고 있습니다. 나는 Ubuntu 16.04 32-bit에서 작업 중이다. 난 그냥 libmarblewidget-qt5.so.22보다 더 많은 일을해야한다,오류 : 맵 테마 파일이 없습니다 ... (타사 라이브러리 Marble을 사용하는 Qt5 응용 프로그램)

Map theme file does not exist: "" 
Ignoring to load the following file since it doesn't look like a valid Marble plugin: "/boot/initrd.img-4.4.0-21-generic" 
Reason: "'/boot/initrd.img-4.4.0-21-generic' is not an ELF object" 
Ignoring to load the following file since it doesn't look like a valid Marble plugin: "/boot/vmlinuz-4.4.0-21-generic" 
Reason: "'/boot/vmlinuz-4.4.0-21-generic' is not an ELF object" 
Segmentation fault (core dumped) 

내가 뭔가를 놓친 거지 : 나는 (터미널에서) 응용 프로그램에 대한 시작 스크립트를 실행하면

는이 오류 메시지가 ?

답변

0

대리석을 제대로 실행하려면 libmarblewidget-qt5.so 이상이 필요합니다. 최소한지도 테마에 대한 데이터가 필요하며 대개 일부 플러그인도 필요합니다. Marble을 컴파일 한 후 설치 폴더 (CMAKE_INSTALL_PREFIX)를 살펴보십시오. 예 :에 플러그인이 있습니다. lib64/marble/이고 데이터는 share/marble/data입니다.

플러그인과 데이터의 경로는 libmarblewidget-qt5.so으로 컴파일되지만 런타임에 변경할 수 있습니다. 그렇게하려면 MarbleDirs::setMarbleDataPath()MarbleDirs::setMarblePluginPath()을 사용하십시오. 한마디로

, 당신은 전부 또는 일부 데이터 선택

  • 전화의 다른 폴더로 선택
  • 전화 MarbleDirs::setMarblePluginPath("/your/plugins/install/folder");
  • 선박의 폴더에

    • 선박 전부 또는 일부 플러그인에있다 MarbleDirs::setMarbleDataPath("/your/data/install/folder");

    출력물 (그리고 segfault도있을 수 있음)은 se 컴파일 된 플러그인 경로가 대상 시스템에 존재하지 않으므로 Marble의 플러그인 관리자가 /을 검색하고 거기에서 찾은 파일을로드하려고 시도합니다.

  • +0

    감사합니다. 애플리케이션이 이제 제대로 실행됩니다. – maltja