회원 및 비회원 모두 열람이 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.
이솝s5pc100보드에 QT4.5.2을 올려서 터치동작을 하고 싶은데, 혹시 Qt GUI에서 터치가 되게 하는 절차를 알수있을까요?
Linux GUI로 안드로이드를 써 볼까 했는데 너무 어려울 것 같아서, QT로 해볼까 하는데 터치 동작이 안되네요.
현재 제가 해본 절차는 다음과 같습니다.
일단은 이솝s5pc100보드에서
linux kernel은 xwindow용입니다.
그리고 xwindows를 실행시키지 않기 위하여
/etc/inittab 파일에서
id:3:initdefault: 로 했습니다.
1) 우분투 호스트에서
#cd /tmp
#tar xfz /mnt/hgfs/nshare/qt-embedded-linux-opensource-src-4.5.2.tar.gz
#cd qt-embedded-linux-opensource-src-4.5.2/
#./configure --prefix=/qt4/qt-arm -embedded arm -static -qt-libjpeg -svg -no-cups -depths 16 -little-endian -webkit -qt-freetype -qt-libmng -qt-libpng -qt-libtiff -qt-gif -depths 16,24,32 -qt-mouse-linuxtp -qt-mouse-tslib -plugin-mouse-tslib
#make
#make install
#cp /qt4/qt-arm/plugins/mousedrivers/libqtslibmousedriver.a /qt4/qt-arm/lib
#cp -R /qt4/qt-arm /nfsroot/RootFS-S5PC100/ -->nfs rootfs으로 qt4를 copy
2) arm board에서
#pwd
/home/root
#vi .profile
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=tslib:$TSLIB_TSDE
#source .profile
이렇게 세팅을 하였는데, 빠지거나 잘못된것은 없는지요?
정확히 확인은 못하였지만, Qt에서 tslib를 third-party로 직접 코드를 포함시키지 않은걸로 기억납니다. libqtslibmousedriver를 복사하는 것은 의미가 없을걸라 생각되고, static로 build된 Qt의 libqtslibmousedriver는 다시 실제 tslib를 참조했던 것으로 생각됩니다.
위에서 동작하게 하려면, -qt-mouse-tslib 를 옵션으로 넣어주셨으니 QtCore 라이브러리에 tslib 플러그인은 포함되어 있으니, 실제 tslib 라이브러리만 실행시 제대로 링크되는 걸 확인하시면 돌아가리라 생각됩니다.
저는 shared로 컴파일 하였는데, s5pc100에서 크로스컴파일 환경에서 tslib가 자동으로 detect되어 QWS_MOUSE_PROTO만 설정하고 문제 없이 실행되었습니다.(-qt-mouse-tslib 옵션만 넣고)
export QWS_MOUSE_PROTO=tslib:$TSLIB_TSDE 에서 VICE는 짤린 것이겠죠?
저 같은 경우는 예전에 전체 static 묶을 때 src/gui/embedded/qmousetslib_qws.{cpp,h} 에서 직접 tslib를 넣어서 동작시켰었습니다.
답변 감사합니다.
그런데 제가 좀 리눅스에서는 초보수준이라 죄송하게도 약간 이해가 통하지 않는 부분이 있네요.
1) tslib를 다운로드받아서 깔아야 된다는 의미인 것 같은데 실례지만 어디서, 어떻게 다운로드 받을수 있나요?
2)그리고 qt configure시 빌드 옵션에 -static을 없애고 -shared로 바꿔주어야 한다는 의미인가요?
또한 -qt-mouse-linuxtp -qt-mouse-tslib -plugin-mouse-tslib 를 -qt-mouse-tslib로 바꾸어주고, 그런데 이때는 tslib를 다운받아 깔아주지 않아도 자동으로 해준다는 것인지요?
3)전체 static 묶을 때 src/gui/embedded/qmousetslib_qws.{cpp,h} 에서 직접 tslib를 넣어서 동작시켰었습니다.
-->에서 tslib를 다운로드 받아서 어떻게 한다는 것인지 좀 파악이 않되서요?
좀 더 구체적인 설명을 부탁드립니다. 감사합니다.
1) 직접 구글링을 통해 tslib 소스를 받은 뒤 소스 빌드를 할 수 있습니다. 하지만 s5pc100 xwindows 루트파일 시스템(/usr/lib/libts*)에 이미 있기 때문에 그대로 써도 됩니다. 그대로 쓰는게 더 나을 거 같습니다.
2) -static, -shared 는 빌드 성격에 맞게 선택하면 됩니다. dynamic library linking을 하지 않고, 애플리케이션 실행파일에 Qt 라이브러리를 전체 다 넣고자 할 때는 -static을 선택하시면 되고, 일반 개발용으로는 -shared로 사용하시고, configuration시에 prefix로 적어주신 경로에 맞춰 타겟의 동일 경로에 빌드된 파일들을 넣어주시면 됩니다.
-qt-mouse-tslib 의미는 libQtCore에 해당 플러그인을 추가한다는 의미입니다. -plugin-mouse-tslib 의 경우는 libQtCore에 플러그인을 추가하지 않고, 별도로 tslib 플러그인을 빌드하겠다는 의미입니다. 양쪽 다 넣어도 상관은 없습니다만 plugin으로만 빌드를 하게 되면, static 빌드의 경우는 애플리케이션을 빌드시 별도로 tslib plugin을 연결해 주셔야 할 듯합니다. plugin이 아닌 -qt-mouse-tslib 로 넣게 되면, 애플리케이션 빌드시 별도로 tslib plugin을 연결해 주실 필요가없습니다.
tslib 옵션을 Qt configuration시에 넣으시면, configuration 시에 크로스컴파일러 환경의 tslib 라이브러리 존재유무를 체크하게 되고, 없다면 configuration이 실패했다고 나올 것입니다. 여기서 실패가 없었다면, 크로스컴파일러의 tslib를 detect했다는 의미로 보면 됩니다.
3) 개념적으로는 전체 static으로 묶을 때 Qt측 빌드할 때 tslib를 static으로 빌드한 부분을 static linking만 하면 문제가 없을 거 같은데, 문제가 조금 있었던 것으로 기억합니다. 그래서 tslib 소스부분에서 해당 보드에 필요한 부분만 가져와서 Qt측 mouse driver쪽에 직접 삽입하였었습니다.
잘 되지 않으시다면, 메일 주시면, aesop s5pc100에서 제공되는 환경에서 빌드 절차 보내드리겠습니다.
정말 감사합니다.
빌드시 -qt-mouse-tslib 를 하면 자체가 디텍트하여 tslib를 포함시키는 것 같습니다.
사소한 문제도 처음 해보는 사람에게는 매우 큰 문제가 되네요. 옆에서 지적해주시는 충고 한마디에 그동안
며칠을 잠 못자게 한 문제가 해결 되었습니다.
문제는 export QWS_MOUSE_PROTO=tslib:$TSLIB_TSDE를 export QWS_MOUSE_PROTO=tslib:$TSLIB_TSDEVICE로 수정했더니 터치가 동작 합니다. 그동안 간단한 문제로 많이 번거롭게 했습니다. 어쨌든 덕분에 많은 공부를 하게 되었습니다. 따라서 빌드의 각 옵션의 의미를 조금이나마 이해하게 되었습니다.
그런데 한가지 터치의 포인트가 맞지를 않는 문제가 남아 있네요.
터치의 포인트를 맞출수 있는 방법은 없을까요?
cross-compile 환경에 tslib를 build 해 놓으셨겠지요. configure할때 나타나는 메시지를 잘 보시면 tslib가 포함됐는지 확인하실 수 있습니다. 제 경험으로는 build option를 주어도 tslib를 참조할 수 없으면 동작이 안되었던 것으로 기억됩니다.