在线问答
直播中

栾新科

9年用户 519经验值
擅长:嵌入式技术
私信 关注

飞凌嵌入式S5PV210开发板Qt4.7.1 交叉编译环境配置

本帖最后由 forlinx 于 2015-5-20 17:20 编辑

PC 环境:Ubuntu12.04
开发板:OK210
交叉编译器:arm-2009q3(即4.4.1)
1.编译tslib
     tslib 库,是触摸屏校准时需要的库文件,如对触摸屏的数据进行过滤、去抖动等,QT 的库会调用 tslib 的库文件.
    编译tslib库
    1.1将 tslib.tar.gz,拷到 Ubuntu 下,解压tar xzvf  tslib.tar.gz   ;
    1.2安装 autoconf、automake、libtool 包
       在 Ubuntu 命令行中分别执行以下三个升级命令。
       #sudo apt-get install autoconf
       #sudo apt-get install automake
       #sudo apt-get install libtool
       #sudo apt-get install g++
    1.3进入tslib目录:
       cd tslib;
       设置环境变量
       #export  PATH=/usr/local/arm/arm-2009q3/bin:$PATH
       #export  TOOLCHAIN=/usr/local/arm/arm-2009q3      
       #export  TB_CC_PREFIX=arm-linux-
       #export  PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-linux
    
    1.4在tslib目录下运行脚本
       ./autogen.sh
    1.5用configure 生成Makefile.
       echo "ac_cv_func_malloc_0 _nonnull=yes">arm-linux.cache
            # ./configure --host=arm-linux
       --cache-file=arm-linux.cache
       --enable-inputapi=no
       PLUGIN_DIR=/usr/local/arm/tslib/plugins
       --prefix=/usr/local/arm/tslib
       --host=arm-linux
       --cache-file=arm-linux.cache 2>&1 | tee conf_log
       上述命令必须一行输入
          注意:
        注释掉 config.h.in文件中的#undef malloc一行,如下:
        //#undef malloc
    1.6 编译安装
          make 2>&1 | tee make_log
    1.7 make install
    1.8编译完成后检查主机目录 ‘/usr/local/arm/’下面是否已经有了‘tslib’文件夹 ,如果有的话,请修改etc文件夹下的‘ts.conf’,去掉“#  module_raw input”中的#号和空格,如下图所示。
    如果主机目录 ‘/usr/local/arm/’下没有‘tslib’文件夹,请将前面编译好的‘tslib’文件夹拷贝到‘/usr/local/arm’目录下。另外需要把这个‘ tslib ’ 文件夹放到网络文件系 统目录中的 ‘ /usr/local ’ 下 面。
2.编译Qt4.7.1
   2.1将qt-everywhere-opensource-src-4.7.1.tar.gz拷贝到Ubuntu下,进行解压,tar zxvf qt-everywhere-opensource-src-4.7.1.tar.gz 如下图所示:
2.2查看build-all脚本里的编译设置(gedit build-all),尤其是环境变量和路径的设置;确保正确后执行./build-all
2.3编译时可能会提示错误:
      Lib/libQtGui.so:undefined reference to ‘ts_read_raw’
      Lib/libQtGui.so:undefined reference to ‘ts_open’
      Lib/libQtGui.so:undefined reference to ‘ts_fd’
      Lib/libQtGui.so:undefined reference to ‘ts_config’
      Lib/libQtGui.so:undefined reference to ‘ts_close’
      Lib/libQtGui.so:undefined reference to ‘ts_read’
   解决办法:
   修改/mkspecs/qws/linux-arm-g++/qmake.conf文件(添加lts参数)
     QMAKE_CC                = arm-linux-gcc -lts
     QMAKE_CXX              = arm-linux-g++ -lts
     QMAKE_LINK              = arm-linux-g++ -lts
     QMAKE_LINK_SHLIB       = arm-linux-g++ -lts
   如果进行修改后,则build-all脚本里的内容也应进行修改,修改如下去掉以下三行:
3 Qt creator的安装
    3.1您可以使用 QtCreator 集成开发环境开发 Qt 应用,QtCreator 很类似于 Windows 上的 VC++集成开发环境,可以进行控件的可视化,所见即所得,使用该软件可以开发 PC 上的 Qt 应用和嵌入式环境下的 Qt 应用。
   下载 QtCreator 方法,在 Ubuntu 的 Applications 主菜单下,有一项 “Ubuntu SoftwareCenter”,点击后,在弹出的对话框中 输入 Qt Creator ,会列出该软件,点击install安装即可;安装前确保您的 Ubuntu 能够访问互联网,该软件会从 Ubuntu 的服务器下载.安装完成后 Application->Programming->Qt Creator 就是该开发工具。
   3.2建立 QtCreator 开发环境
   3.2.1设置Tool Chains,点击Qt Creator的 Tools菜单下的Options,点击Add添加GCCE,然后点击Browse添加相应的路径,如图所示:
3.2.2Qt Versions的设置:点击Add找到Qt4.7.1的qmake文件,添加进去,之后点击Apply即配置完成。
  
3.3利用Qt Creator 环境制作属于您的 Helloworld
飞凌以经典的Helloword应用程序为例,说明一下如何把Qt应用程序移植到飞凌的开发板上运行,Helloword程序基于新编译的Qt4.7.1库文件运行,创建Helloword这个过程比较简单,用户看图即可实现。
3.3.1File-New
3.3.2选择Q4 Gui Application后。输入工程的名称:HelloWord 即可;其它默认,base class   选择QDialog,如下图:
3.3.3通过图形界面对HelloWord程序进行设置,如下图:
3.3.4设置完成后编译出来的是pc机下运行的版本;我们可以通过projects进行版本设置来编译出适用于开发板的程序,通过projects中的设置选择Qt的版本Qt4.7.1(qt4.7.1)Release如下图:
3.3.5设置好后,再进行编译,则得出的即是可在开发板上运行的版本
注意:可以使用以下方法来判断您编译出来的Helloword是PC Ubuntu上运行的脚本还是开发板上的运行脚本:进入到存放Helloword应用程序的目录下:执行命令:#file Helloword 结果为:
开发板版本:
Helloword: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
PC Ubuntu版本:
Helloword: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x601ba185ddd61cf5786e9437321bd2242900c3dd, not stripped
3.4 在开发板上运行,需要设置环境变量,可以做一个脚本,脚本内容如下(举例):
#!/bin/sh
base1=qpe
pid=`/bin/pidof $base1`
if [ -n "$pid" ]; then
killall $base1
fi
base2=qss
pid=`/bin/pidof $base2`
if [ -n "$pid" ]; then
killall $base2
Fi
base3=quicklauncher
pid=`/bin/pidof $base3`
if [ -n "$pid" ]; then
killall  $base3
fi
base4=fluidlauncher
pid=`/bin/pidof $base4`
if [ -n "$pid" ]; then
killall  $base4
fi
export TSLIB_ROOT=/usr/local/tslib
#export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_TSEVENTTYPE=H3600
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export QTDIR=/opt/qt-4.7.1/
export LD_LIBRARY_PATH=$QTDIR/plugins/qtopialmigrate/:$QTDIR/qt_plugins/imageformats/:$QTDIR/lib:/root/tslib/build/lib:$LD_LIBRARY_PATH
export PATH=/bin:/***in:/usr/bin/:/usr/***in:/root/tslib/build/bin
if [ -c /dev/input/event2 ]; then
      if [ -f /proc/driver/ft5x06_ts ]; then
     echo "capacitor panel touch..."
        export QWS_MOUSE_PROTO='Tslib:/dev/input/event3'
   else
     echo "resistance panel touch..."
  export QWS_MOUSE_PROTO='Tslib:/dev/input/event2'
  
   fi
   
   if [ ! -e /etc/pointercal ]; then
        /bin/calibrate
      fi
        
      if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then
                rm /etc/pointercal
                /bin/calibrate
      fi
else
        export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"
        >/etc/pointercal
fi
export QWS_KEYBOARD=TTY:/dev/tty1
FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)
#export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
case "$FB_SIZE" in
800,480)
export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
;;
480,272)
export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
;;
*)
export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
;;
esac
#export QWS_DISPLAY=:1
export HOME=/root/QtE4Home
cd /opt/qt-4.7.1/demos/embedded/fluidlauncher
#./fluidlauncher -qws
/qt4.7/lincom  -qws
    最后一行为应用程序及此脚本的路径,将该脚本和应用程序放在同一路径下,执行脚本即可调用应用程序。
  以上就是针对飞凌嵌入式 三星 S5PV210(Cortex-A8)开发板的操作。

回帖(3)

邂逅1

2015-7-7 16:13:41
mark一下,好帖子
举报

邂逅1

2015-7-7 16:20:13
楼主,编译的安装包可以在那里下载到,给个链接呗
举报

windworld

2015-9-29 13:22:56
图片看不到,可以重新更下帖吗?正好在做这个
举报

更多回帖

发帖
×
20
完善资料,
赚取积分