2011-11-25 4 views
2

Qt를 처음 사용하고 크로스 컴파일 및 포팅을하므로 나와 함께하시기 바랍니다.Qwt 라이브러리를 게임 북에 이식하기

내 목표는 Qt 기반 응용 프로그램을 위해 Playbook OS에서 Qwt library을 사용하는 것입니다. Qt for Blackberry Playbook에 관한 좋은 튜토리얼을 발견했으며 간단한 Qt "Hello World"애플리케이션을 내 태블릿에서 실행시킬 수있었습니다.

내 다음 단계는 Qwt 라이브러리를 만들어 내 응용 프로그램에서 사용하는 것입니다. 나는 약간의 시간을 qmake에 대해 읽는 데 보냈고 문제없이 응용 프로그램과 함께 라이브러리를 만들었지 만 응용 프로그램을 실행할 때 곧 실행됩니다. 여기

내가 라이브러리와 내 응용 프로그램을 모두 구축했다 단계는 다음과 같습니다

  1. 는 Qwt의 소스를 다운로드하고 RIM's Qt port와 함께 제공되는 qmake를 사용했다. 참조 용 : Qt 포트를 설치할 때 "stage" 디렉토리가 생성되고 qmake는 ~/stage/nto/armle-v7/usr/lib/qt4/bin/qmake 디렉토리에 생성됩니다. 먼저 Designer 플러그인에 대한 오류가 있지만 디자이너 스위치를 끈 후에 오류나 경고없이 컴파일됩니다.
  2. Qwt와 함께 제공되는 샘플 중 하나를 만들었습니다. 코드에 줄을 추가했을뿐입니다 (자습서 지침에 따라) : QCoreApplication::addLibraryPath("app/native/lib");. 런타임에 장치에있는 공유 라이브러리가있는 위치를 응용 프로그램에 알리는 데 필요합니다. 여기도 문제 없습니다.

포함 ($$ {PWD} /../ examples.pri)

TARGET = curvdemo1  
DESTDIR = . 

QMAKE_LFLAGS += '-Wl,-rpath,\'./app/native/lib\'' 
LIBS += -lbbsupport 

SOURCES = \  
    curvdemo1.cpp  

package.target = $${TARGET}.bar 
package.depends = $$TARGET 
package.commands = blackberry-nativepackager \ 
    -devMode \ 
    -package $${TARGET}.bar -arg -platform -arg blackberry \ 
    blackberry-tablet.xml $$TARGET \ 
    -e icon.png res/icon.png \ 
    -e splashscreen.png res/splashscreen.png \ 
    -e $$[QT_INSTALL_LIBS]/libQtCore.so.4 lib/libQtCore.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libQtGui.so.4 lib/libQtGui.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libQtOpenGL.so.4 lib/libQtOpenGL.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libQtNetwork.so.4 lib/libQtNetwork.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libbbsupport.so.4 lib/libbbsupport.so.4 \ 
    -e $$[QT_INSTALL_PLUGINS]/platforms/libblackberry.so lib/platforms/libblackberry.so 
    -e /home/builder/Qwt/qwt-6.0.1/lib/libqwt.so.6 lib/libqwt.so.6 \ 
    -e /home/builder/Qwt/qwt-6.0.1/lib/libqwtmathml.so.6 lib/libqwtmathml.so.6 

QMAKE_EXTRA_TARGETS += package 

나는 응용 프로그램을 패키지화하고 배포 그러나 응용 프로그램이 충돌을 실행할 때 다음과 같이 내 .PRO 파일 보였다 스플래시 화면이 사라지 자마자

위의 단계는 Qwt를 공유 라이브러리로 사용하려는 시도를 나타냅니다. 라이브러리 지침에 따라 QwtDll을 제거하여 정적 라이브러리로 빌드하려고 시도했지만 최종 결과는 동일합니다. 바이너리는 크기에 따라 정적 라이브러리를 사용한다고 말할 수 있습니다.

Qwt 라이브러리가 제대로 빌드되지 않았고 테스트 응용 프로그램에서 올바르게로드 할 수 없다고 생각합니다. 그렇다면이 라이브러리를 게임 북 OS로 올바르게 포팅하는 방법은 무엇입니까? 이 단계들에서 내가 누락 된 부분이 있다면?

BTW 다른 이유로 momentics를 사용하여 당분간 디버깅 할 수 없습니다.

내 학습 경험에 대한 기여에 감사드립니다.

답변

2

내가 Qt는 크로스 컴파일 모두 새로운 오전,하지만 난 문제가 무엇인지 생각했고 지금은 그래프가와 플레이 북에서 실행중인 내 질문에서 언급 한 바와 같이

[SOLVED]를.

문제의 원인은 .pro 파일입니다. 라이브러리와 함께 제공되는 예제를 사용하고 프로젝트 파일을 올바르게 링크하도록 설정 했으므로 프로젝트를 빌드 할 때 문제가 없었지만 런타임에 차트가 의존하는 특정 라이브러리를 찾을 수 없었습니다.

나는 파일에서 include($${PWD}/../examples.pri) 라인을 제거했습니다 내가 make을 실행했을 때 나는이와 유사한 경고의 수를 가지고 :

libqwt.so: undefined reference to QSvgGenerator::~QSvgGenerator()

로 이어질 즉,이 유사

warning: libQtSvg.so.4, needed by /home/builder/Qwt/qwt-6.0.1/lib/libqwt.so, not found (try using -rpath or -rpath-link)

및 오류를 결론 내 초기 프로젝트 파일이 나를 관리하지만 초보자 혼란. 플레이 북에서 공유 라이브러리가 누락되었습니다. 다음과 같은 문제를 해결

내 마지막 프로젝트 파일은 같습니다

QMAKE_LFLAGS += '-Wl,-rpath,\'./app/native/lib\'' 

LIBS += -lQtSvg -lQtXml 
LIBS += -lbbsupport 
LIBS += -L/home/builder/Qwt/qwt-6.0.1/lib -lqwt -lqwtmathml 

INCLUDEPATH += /home/builder/Qwt/qwt-6.0.1/src  
CONFIG += qwt  
QWT_CONFIG  += QwtSvg 
QWT_CONFIG  += QwtMathML 

SOURCES += main.cpp 

package.target = $${TARGET}.bar 
package.depends = $$TARGET 
package.commands = blackberry-nativepackager \ 
    -devMode \ 
    -package $${TARGET}.bar -arg -platform -arg blackberry \ 
    blackberry-tablet.xml $$TARGET \ 
    -e icon.png res/icon.png \ 
    -e splashscreen.png res/splashscreen.png \ 
    -e $$[QT_INSTALL_LIBS]/libQtCore.so.4 lib/libQtCore.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libQtGui.so.4 lib/libQtGui.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libQtOpenGL.so.4 lib/libQtOpenGL.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libQtNetwork.so.4 lib/libQtNetwork.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libbbsupport.so.4 lib/libbbsupport.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libQtSvg.so.4 lib/libQtSvg.so.4 \ 
    -e $$[QT_INSTALL_LIBS]/libQtXml.so.4 lib/libQtXml.so.4 \ 
    -e /home/builder/Qwt/qwt-6.0.1/lib/libqwt.so.6 lib/libqwt.so.6 \ 
    -e /home/builder/Qwt/qwt-6.0.1/lib/libqwtmathml.so.6 lib/libqwtmathml.so.6 \ 
    -e $$[QT_INSTALL_PLUGINS]/platforms/libblackberry.so lib/platforms/libblackberry.so 

QMAKE_EXTRA_TARGETS += package