Qt-embedded-linux-opensource-src-4.5.1移植到mini2440开发板技术说明

发布时间:2024-07-02  

用过友善之臂的朋友都知道,友善之臂mini2440内置的是qt2的界面设计,但是现在q4逐渐成为主流。如何把qt4成功移植到mini2440非常不容易,本人也费了很到的功夫才完成了这样的工程。现在我把自己的经验拿出来与大家分享,希望有兴趣的朋友少走弯路。

1.我的环境及所需资源:

   PC机操作系统:Ubuntu

   交叉编译工具:arm-linux-gcc-4.3.2.tar.gz

   所需资源:  tslib-1.4.tar.gz qt-embedded-linux-opensource-src-4.5.1.tar.gz

               qt-x11-linux-opensource-src-4.5.1.tar.gz

2.安装交叉编译环境:

   把arm-linux-gcc-4.3.2.tar.gz放到/tmp 目录下

   # tar xzvf arm-linux-gcc-4.3.2.tar.gz -C /

   #gedit /root/.bashrc

   这是编辑/root/.bashrc文件,在最后一行 export PATH=$PATH:/usr/local/arm/4.3.2/bin

   注销系统

   #arm-linux-gcc -v 可以看到版本信息

3,安装tslib-1.4

    这是个触摸屏的库文件,据网上说qt4只支持tslib-1.4。我没有实验别的,就用了这个,可以成功。

    把tslib-1.4.tar.gz放到/home目录下

    #tar xvzf tslib-1.4.tar.gz

   解压,cd 到其目录下
           安装automake,autoconf,libtool
           #sudo apt-get install automake autoconf libtool

    #cd tslib

    #./autogen.sh

    #./configure --profix=/home/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

    #make

    #make install

    这样以后可以看到/home/mytslib/下有了库文件,移植时会用到!先不详细说明。

4.安装qt-x11-linux-opensource-src-4.5.1.tar.gz

    把qt-x11-linux-opensource-src-4.5.1.tar.gz放到/opt目录下

    #tar xvzf qt-x11-linux-opensource-src-4.5.1.tar.gz

    #cd qt-x11-linux-opensource-src-4.5.1

    #./configure

    #gmake      //过程很长,我用的三个多小时

    #gmake install

    这是安装PC机上的qt4,方便设计,在PC机上能够成功了,在交叉编译就方便了!然后制作一个运行环境变量的文件,方便改变环境变量设置,如下在当前文件夹下接着输入

    #gedit setenv-x11.sh

这时会跳出来一个编辑文本,在里面输入:

    PATH=/usr/local/Trolltech/Qt-4.5.1/bin:$PATH

    QTDIR=/usr/local/Trolltech/QT-4.5.2

    MAINPATH=$QTDIR/man:$MAINPATH

    LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

    export PATH QTDIR MAINPATH   LD_LIBRARY_PATH

然后保存!在每次进入qt-x11-linux-opensource-src-4.5.1目录中要 #source setenv-x11.sh

把环境变量设置好。

5,安装qt-embedded-linux-opensource-src-4.5.1.tar.gz

    把qt-embedded-linux-opensource-src-4.5.1.tar.gz放到/tmp目录下

    在安装qt-embedded-linux-opensource-src-4.5.1.tar.gz之前先在根目录下建立两个目录(即文件夹)如下步骤:

    #cd /     进入根目录

    #mkdir mini2440   这里准备存放qt-embedded-linux-opensource-src-4.5.1的库文件

   现在安装qt-embedded-linux-opensource-src-4.5.1.tar.gz

    #cd /tmp  确定qt-embedded-linux-opensource-src-4.5.1.tar.gz放到/tmp目录下了才行

    #tar xvzf qt-embedded-linux-opensource-src-4.5.1.tar.gz

    #cd qt-embedded-linux-opensource-src-4.5.1.

    #./configure -prefix= /mini2440   -release -shared -fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb -confirm-license -qt-mouse-tslib -I/home/mytslib/include -L/home/mytslib/lib

mini2440内的空间有限,所以剪裁很多,注意最后的部分是为了找到触屏的库文件,然后

    #make

    #make install

    这样,嵌入式版本的qt4也装成功了,若想进行交叉编译,首先也得改变环境变量,所以也可以在当前目录下建一个环境变量的文件setenv-embedded.sh 如下:

   #gedit setenv-embedded.sh

这时跳出一个编辑文本输入:

    PATH=/mini2440/bin:$PATH

    QTDIR=/mini2440

    MAINPATH=$QTDIR/man:$MAINPATH

    LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

    export PATH QTDIR MAINPATH   LD_LIBRARY_PATH

保存退出。每次进行qt4-embedded的交叉编译前先# source setenv-embedded.sh

到目前为止,两个版本的qt4在PC机上的安装算是结束了,下一步要移植嵌入式的qt4库文件到开发板。


6.制作库文件

   前面介绍了在根文件系统下建立两个目录mini2440和tslib1.4.经过第5步后,mini2440内已经有了库文件,现在把触屏的库文件移植到tslib目录。

在根文件的mini2440文件中除了有lib目录,还有bin,examples等目录,但是移植到开发板的文件只需要mini2440下的lib目录。Lib目录有30多兆,若太大,可以删除/lib/fonts中的一些字体!我的没有删除任何字体!我的mini2440是64兆的,剩余大概13兆了,显然不够,于是我把它自带的Qt2的库文件及有关qt2的文件全删除了(所以现在没有办法运行qt2),剩余47兆,足够运行qt4.那么接下来解释移植的过程了:

   首先,在超级终端下操作开发板,在开发板的根目录下建立两个目录mini2440和tslib,一样的方法:

#mkdir mini2440   注意这是对开发板的操作,不再是PC机了!

     然后,不你是用什么方法,要把PC机根目录下/mini2440里的lib目录(整个文件件)(其他的如bin等都不用)全部拷到开发板根目下的/mini2440中,同理把要把PC机根目录下/home里的tslib目录(整个文件件)全部拷到开发板根目下的根目录中.

    你可以用串口传输 ,或者优盘传输,或者nfs等,最终的效果是开发板根目录下的/mini2440中有QT4的lib,根目录有触屏的tslib目录

    最后,就是设置开发板的环境变量了:在超级终端里的命令行下输入:

#vi /etc/profile

把下面的全部加到profile的最后面

export QTDIR=/mini2440

export T_ROOT=/tslib

export PATH=$QTDIR/bin:$PATH

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf

export TSLIB_CALIBFILE=/etc/pointercal

export QWS_MOUSE_PROTO=tslib:/dev/input/event0

export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib

 然后编辑/tslib/etc/ts.conf,把第二行的#module_raw input前面的#号去掉

到目前位置,这个移植过程算是结束了,这样就可以成功了!够详细了吧!前提是你按照这个步子正确的走了!

你可以进入/tslib/bin下运行下ts_calibrate来初始化触摸屏

7,例子 hello world!

   A,PC机下编译:

     进入PC机中/opt/qt-x11-linux-opensource-src-4.5.1

     #cd /opt/qt-x11-linux-opensource-src-4.5.1.

     #source setenv-x11.sh   改变环境变量,设置为适合pc机的开发环境

     #mkdir hello        

     #cd hello  进入hello目录

     #vi hello.cpp  编写hello world 程序,在hello.cpp中输入以下代码:

                   #include

                   #include

 

                  int main(int argc, char *argv[])

                  {

                        QApplication app(argc,argv);

                        QPushButton b("Hello World !");

                        b.show();

                     QObject::connect(&b,SIGNAL(clicked()),&app,SLOT(quit()));

                     return app.exec();

                   }

保存退出。然后在当前目录下继续执行以下命令:

   #qmake -project

   #qmake

   #make

   #ls

这时在这个目录下可以看到生成了可执行文件hello,然后

   #./hello

你会发现,跳出了一个hello world的对话框,这样一个简单的界面就成功了

B,交叉编译

  首先把/opt/qt-x11-linux-opensource-src-4.5.1下的hello目录拷到/tmp/qt-embedded-linux-opensource-src-4.5.1目录下

#cp -fr /opt/qt-x11-linux-opensource-src-4.5.1/hello /tmp/qt-embedded-linux-opensource-src-4.5.1

#cd  /tmp/qt-embedded-linux-opensource-src-4.5.1

#source setenv-embedded.sh   这一步很关键,否则你交叉编译不了,改变的环境变量

#cd hello

#make clean

#qmake -project             重新生成.pro

#qmake                    重新生成适合交叉编译的Makefile

#make

#ls

这时候,你发现有hello 的可执行文件,原来的hello已经被替换掉了,现在这个hello文件是适合开发板运行的!这时候你如果执行./hello是不会有界面的,把它放到开发板的文件系统下才会有界面(前提是设置好了开发板的环境变量,具体看下一步)

C,移植到开发板

   把刚才在/tmp/qt-embedded-linux-opensource-src-4.5.1/hello下生成的hello可执行文件移植到开发板的根目录下(可自己选择存放位置),你可以用串口传送,优盘传送或者nfs,不管怎样,最后的结果是在超级终端下可以看到开发板的文件系统中有hello,我是放在了根目录下,然后在超级终端下操作开发板:

   #chmod +x hello   增加它的可执行权限

   #export QTDIR=/mini2440               依次输入设置开发板环境变量的东西

   #export T_ROOT=/tslib

   #export PATH=$QTDIR/bin:$PATH

   #export TSLIB_CONSOLEDEVICE=none

   #export TSLIB_FBDEVICE=/dev/fb0

   #export TSLIB_TSDEVICE=/dev/input/event0

   #export TSLIB_PLUGINDIR=$T_ROOT/lib/ts

   #export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf

   #export TSLIB_CALIBFILE=/etc/pointercal

   #export QWS_MOUSE_PROTO=tslib:/dev/input/event0

   #export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib

 

但目前为止,环境变量设置成功 可以通过echo命令查看是否成功,如echo $QTDIR

最后执行:

  #./hello -qws   你会发现开发板的屏幕上上有了hello world的界面了!


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>