홈 > 고객/기술지원 > Q & A
i.MX8M | MV8895 | MV8890 | MV7420 | MV5260 | MV5422 | MV4412TAB | MV4412 | S5PV210 | iMX6Q | AM3358
Android | Linux | Windows CE | Firmware
 
Re, V210 Qt Application 실행문제
등록인 : 마이크로비젼 |

>안녕하세요
>램디스크 확장문제는 잘해결되었습니다. 감사합니다.
>
>또다른 문제는
>Qt-Lib-4.7.4 를 arm-2009q3 로 컴파일해서 라이브러리가 생성되고 데모프로그램도 생성이 되었습니다
>
>Qt Lib와 예제를 테스트하기위해 RAMDISK 의 /app 안에 Qt Lib와 데모프로그램 실행파일 1개를 넣고
>구운후 부팅을해서 /app 안의 데모프로그램을 실행시켰더니 라이브러리 로딩 에러가 납니다.
>
>V210 에 Qt 가 동작하게 하기위한 방법좀 부탁드립니다.
>어플팀은 끝나가는데 조급합니다.
>
>부탁드립니다.

마이브로비젼 기술지원팀입니다.

QT관련하여 확인한 결과 MVV210-LCD에서는 진행을 하지 않아 지원하기 힘든 점이 있습니다.
예전에 QT 2.2.0 에서 6410 을 올릴 때 작업 한 내용입니다. 참고로 봐주시기 바라겠습니다.

!! build 과정
qtopia를 컴파일하기 위해 필요한 라이브러리를 컴파일한다.
다음과 같은 라이브러리가 필요하다.

e2fsprogs-1.39.tar.gz
libpng-1.2.15.tar.gz
zlib-1.2.3.tar.bz2
jpegsrc.v6b.tar.gz
tslib-0.0cvs20051212-r3.tar.bz2

여기서 다운로드하고 모두 압축을 풀어준다.

!!! e2fsprogs cross compile
cd e2fsprogs-1.39
./configure --host=arm-linux --enable-elf-shlibs --with-cc=arm-linux-gcc --with-linker=arm-linux-ld
make
cp lib/libuuid.so* $home/arm/image/lib/ -a

!!! libjpeg cross compile
cd jpeg-6b
./configure --enable-shared
vi Makefile
CC=arm-linux-gcc 수정
AR=arm-linux-ar rc 수정
AR2=arm-linux-ranlib 수정
저장
make
make install prefix=$HOME/arm/image

!!! zlib cross compile
cd zlib-1.2.3
cd /home/arm/zlib
./configure -shared

vi Makefile
CC=arm-linux-gcc
LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1
CPP=arm-linux-gcc -E
AR=arm-linux-ar rc
RANLIB=arm-linux-ranlib
prefix =$(HOME)/arm/image

make
cp libz.so* $HOME/arm/image/lib/
mkdir $HOME/arm/image/include
cp *.h $HOME/arm/image/include

!!! libpng cross compile
cd libpng-1.2.15/
cp scripts/makefile.linux ./Makefile
vi Makefile
AR_RC=arm-linux-ar rc
CC=arm-linux-gcc
RANLIB=arm-linux-ranlib
prefix=$(HOME)/arm/image
ZLIBLIB=../zlib-1.2.3
ZLIBINC=../zlib-1.2.3

pngrutil.c수정
45 png_uint_32 PNGAPI
46 png_get_uint_31(png_structp png_ptr, png_bytep buf)
47 {
48 png_uint_32 i = png_get_uint_32(buf);
49 #if 0
50 if (i > PNG_UINT_31_MAX)
51 png_error(png_ptr, \"PNG unsigned integer out of range.\");
52 #else
53 if (i > PNG_UINT_31_MAX - 1)
54 if (i != PNG_UINT_31_MAX)
55 png_error(png_ptr, \"PNG unsigned integer out of range.\");
56 #endif
57 return (i);
58 }


make
cp libpng12.so* $HOME/arm/image/lib/ -a
cp libpng12.so $HOME/arm/image/lib/
cp *.h $HOME/arm/image/include/

!!! tslib cross compile
cd tslib-0.0cvs20051212-r34/tslib/
./autogen.sh
echo \"ac_cv_func_malloc_0_nonnull=yes\" >arm-linux.cache
./configure --host=arm-linux --prefix=$HOME/arm/image --enable-shared --cache-file=arm-linux.cache
make
cp src/.libs/libts-0.0.so.0* $HOME/arm/image/lib/
cp src/.libs/libts.so $HOME/arm/image/lib/
cp src/*.h $HOME/arm/image/include/

!!! qtopia-free-2.2.0 build
[root@localhost qtopia-free-2.2.0]# vi qtopia/mkspecs/qws/linux-arm-g++/qmake.conf 수정

#QMAKE_LIBS_QT = -lqte
QMAKE_LIBS_QT = -lqte -lpng -lts -lz -luuid -ljpeg

[root@localhost qtopia-free-2.2.0]# vi qt2/include/qwindowsystem_qws.h 추가(나중에 생기는 링크파일)
[root@localhost qtopia-free-2.2.0]# vi qt2/src/kernel/qwindowsystem_qws.h 추가(원본)
class QWSInputMethod;
class QWSGestureMethod;

[root@localhost qtopia-free-2.2.0]# vi qt2/include/qvaluestack.h 수정(나주엥 생기는 링크파일)
[root@localhost qtopia-free-2.2.0]# vi qt2/src/tools/qvaluestack.h 수정(원본)
# remove( this->fromLast() );
QValueList<T>::remove( this->fromLast() );

qtopia/src/libraries/qtopia/custom-linux-ipaq-g++.h
qtopia/src/libraries/qtopia/custom-linux-ipaq-g++.cpp을
qtopia/src/libraries/qtopia/custom-linux-arm-g++.h
qtopia/src/libraries/qtopia/custom-linux-arm-g++.cpp로 복사



[root@localhost qtopia-free-2.2.0]# vi qtopia/src/libraries/qtopia/qdawg.cpp 수정
#QDawgPrivate::~QDawgPrivate()
~QDawgPrivate()


[root@localhost qtopia-free-2.2.0]# vi qtopia/src/libraries/qtopia/backend/event.cpp
#char i = Event::MON;
unsigned int i = Event::MON;


[root@localhost qtopia-free-2.2.0]# vi qtopia/src/libraries/qtopia2/thumbnailview_p.h 수정
#void ThumbnailItem::paintItem( QPainter*, const QColorGroup& );
void paintItem( QPainter*, const QColorGroup& );

[root@localhost qtopia-free-2.2.0]# vi qtopia/src/libraries/qtopiapim/abtable_p.h
#QListViewItem* PhoneTypeSelector::addType(QListViewItem* prevItem,
QListViewItem* addType(QListViewItem* prevItem,


[root@localhost qtopia-free-2.2.0]# vi qtopia/src/libraries/qtopiapim/numberentry_p.h
#bool NumberEntryDialog::eventFilter(QObject *o, QEvent *e);
bool eventFilter(QObject *o, QEvent *e);

[root@localhost qtopia-free-2.2.0]# vi qtopia/src/libraries/mediaplayer/videoviewer.cpp
#SimpleVideoWidget::SimpleVideoWidget(QWidget *parent);
SimpleVideoWidget(QWidget *parent);

[root@localhost qtopia-free-2.2.0]# vi qtopia/src/applications/addressbook/ablabel.h
#bool AbLabel::decodeHref(const QString& href, ServiceRequest* req, QString* pm) const;
bool decodeHref(const QString& href, ServiceRequest* req, QString* pm) const;


[root@localhost qtopia-free-2.2.0]# vi qtopia/src/games/minesweep/minefield.h
<<<vim c
#void MineField::setState( State st );
#void MineField::placeMines();
void setState( State st );
void placeMines();
>>>

[root@localhost qtopia-free-2.2.0]# vi qtopia/src/settings/buttoneditor/buttoneditordialog.h
<<<vim c
#ServiceRequest ButtonEditorDialog::actionFor(int cur) const;
ServiceRequest actionFor(int cur) const;
>>>

[root@localhost qtopia-free-2.2.0]# vi qtopia/src/settings/qipkg/packagewizard.h
<<<vim c
#PackageItem* PackageWizard::current() const;
PackageItem* current() const;
>>>

[root@localhost qtopia-free-2.2.0]# vi qtopia/src/plugins/inputmethods/keyboard/keyboard.h
<<<vim c
#KeyboardPicks::~KeyboardPicks();
~KeyboardPicks();
>>>

[root@localhost qtopia-free-2.2.0]# vi qtopia/src/plugins/decorations/polished/polished.h
<<<vim c
#void PolishedDecoration::drawBlend( QPainter *, const QRect &r, const QColor &c1, const QColor&c2 ) const;
void drawBlend( QPainter *, const QRect &r, const QColor &c1, const QColor&c2 ) const;
>>>

[root@localhost qtopia-free-2.2.0]# vi qtopia/src/server/inputmethods.cpp
<<<vim c
#IMToolButton::IMToolButton( QWidget *parent ) : QToolButton( parent )
IMToolButton( QWidget *parent ) : QToolButton( parent )
>>>

export QTDIR=/project/qt/qtopia-free-2.2.0/qt2/
export QPEDIR=/project/qt/qtopia-free-2.2.0/
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR=/project/qt/qtopia-free-2.2.0/tmake/
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g+

** MV6410
export QTDIR=/home/mv6410/Qtopia/qtopia-free-2.2.0/qt2/
export QPEDIR=/home/mv6410/Qtopia/qtopia-free-2.2.0/
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR=/home/mv6410/Qtopia/qtopia-free-2.2.0/tmake/
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g+

[root@localhost qtopia-free-2.2.0]# cp qtopia/src/qt/qconfig-qpe.h qt2/src/tools/


** MV6410
./configure -qte \'-embedded -xplatform linux-arm-g++ -qconfig qpe -no-qvfb -depths 16,24 -system-jpeg -system-libpng -system-zlib -tslib -gif -thread -no-xft -release -I/home/mv6410/Qtopia/prefix/include -L/home/mv6410/Qtopia/prefix/lib -lpng -lts -lz -luuid -ljpeg\' -qpe \'-xplatform linux-arm-g++ -edition pda -displaysize 800x480 -I/home/mv6410/Qtopia/prefix/include -L/home/mv6410/Qtopia/prefix/lib -prefix=/home/mv6410/Qtopia/prefix\' -dqt \'-thread -I/home/mv6410/Qtopia/qtopia-free-2.2.0/qt2/src/3rdparty/freetype/include\'

[root@localhost qtopia-free-2.2.0]# make

[root@localhost qtopia-free-2.2.0]# make install

위에서 빌드한 관련 라이브러리를 타겟의 /lib에 복사한다.
타겟의 /etc에 ts.conf를 생성한다.

vi ts.conf
<<<vim c
module_raw input
module linear
>>>

화경변수를 설정한다. (가장 중요)
<<<vim c
export QTDIR=/usr/qtopia
export QPEDIR=$QTDIR
export QWS_MOUSE_PROTO=TPanel:/dev/input/event0
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:$QTDIR/bin
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib:/lib/lib:$QTDIR/lib
export HOME=/root
# TSLIB
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
>>>
덧글 0 | 엮인글 0
 





 
    705 / 2,665,081
서울특별시 구로구 구로3동 235번지 한신IT타워 1004호 TEL. 02-3283-0101 FAX. 02-3283-0160
사업자등록번호 : 116-81-51889 대표자 : 이현재 E-MAIL : sale@microvision.co.kr
COPYRIGHT 2004 (주)마이크로비젼 ALL RIGHTS RESERVED.
%3Cul+class%3D%22Klocation%22%3E%3Cli+class%3D%22first%22%3E%3Ca+href%3D%22..%2Fhome%2F%22%3EHOME%3C%2Fa%3E%3C%2Fli%3E%3Cli%3E%3Ca+href%3D%22..%2Fhome%2Fsub03.php%22%3E%EA%B3%A0%EA%B0%9D%2F%EA%B8%B0%EC%88%A0%EC%A7%80%EC%9B%90%3C%2Fa%3E%3C%2Fli%3E%3Cli%3E%3Ca+href%3D%22..%2Fhome%2Fsub03.php%3Fmid%3D51%22%3EQ+%26+A%3C%2Fa%3E%3C%2Fli%3E%3C%2Ful%3E