arm linux 移植qt
2017-12-20 17:25:38 dzw19911024 阅读数 96

1、交叉编译好assistant  使用前面提到过的编译qt-everywhere-opensource-src-5.6.2库的方法,将其中-make tools 和skip qttool 去掉。编译好后,在安装目录下会有assistant应用程序。

2、按照QT官网的要求,编辑好qhcp和qhp 文件,并且编译好放入到根文件系统中。

3、在应用程序中启动该assistant服务,并指定服务浏览的目录。

4、如果需要修改assistant的外观等,目前找到的方法就是修改qt-everywhere-opensource-src-5.6.2库中assistant的源码,重新编译。

2019-06-15 13:20:19 qq_14843999 阅读数 8

1.安装tslib

tslib1.4可以在网上下载
安装编译过程可以参考其他教程

2.安装QT5.4.1

2.1下载QT5.4.1

链接: 网站下载

2.2解压

使用下面命令解压

tar xzf qt-everywhere-opensource-src-5.4.1.tar.gz
cd qt-everywhere-opensource-src-5.4.1/

2.3修改配置文件替换自己的编译器

使用下面的命令去修改配置文件 设置相应的编译器

vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

下面替换为ARM板上可以运行的tslib 路径
QMAKE_INCDIR += /usr/local/tslib/include
QMAKE_LIBDIR += /usr/local/tslib/lib

arm-linux-gnueabihf 替换成你自己的编译器
如果编译有问题,最好改成绝对路径

/*************************************
*arm-linux-gnueabihf 替换成相应的编译器
***************************************/
MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib
 
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE   += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
 
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
 
QMAKE_INCDIR += /usr/local/tslib/include
QMAKE_LIBDIR += /usr/local/tslib/lib
 
# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc -lts
QMAKE_CXX               = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK              = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++ -lts
 
# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_NM                = arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-linux-gnueabihf-strip
load(qt_config)

2.4配置

执行下面命令去配置
修改安装路径 -prefix后面就是你自己的安装路径
-prefix /usr/local/qt5.4.1_arm \

./configure \
        -prefix /usr/local/qt5.4.1_arm \
        -confirm-license \
        -opensource \
        -release  \
        -make libs \
        -xplatform linux-arm-gnueabi-g++ \
        -optimized-qmake \
        -pch \
        -qt-sql-sqlite \
        -qt-libjpeg \
        -qt-libpng \
        -qt-zlib \
        -tslib \
        -no-sse2 \
        -no-openssl \
        -no-nis \
        -no-cups \
        -no-dbus \
        -no-glib \
        -no-xcb \
        -no-xcursor -no-xfixes -no-xrandr -no-xrender \
        -no-separate-debug-info \
        -make examples -nomake tools -nomake tests -no-iconv \
        -mtdev -evdev

2.4配置

编译make
安装sudo make install

2.5 make

执行 make命令

2.6 make install

执行 sudo make install

3 配置ARM

3.1 拷贝文件到arm上

到qt的安装目录下把所有文件拷贝到arm上的/opt目录
到tslib安装补录下把所有的文件拷贝到/opt目录下
/opt这个目录可以自己定义

3.2 配置ARM环境

可以将下面的内容写入/etc/profile文件中 板卡启动之后就会自动配置

export TSLIB_CONSOLEDEVICE=none
#配置tslib的屏幕设备文件
export TSLIB_FBDEVICE=/dev/fb0
#配置tslib的触摸屏文件
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/opt/etc/ts.conf
export TSLIB_PLUGINDIR=/opt/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/lib:/opt/lib
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/opt/bin

export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/plugins
export QT_PLUGIN_PATH=/opt/plugins/platforms/
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:tty=/dev/tty1
export QT_QPA_FONTDIR=/opt/lib/fonts
#配置你需要使用的输入设备 触摸屏或者键盘鼠标
export QT_QPA_GENERIC_PLUGINS=evdevmouse
#export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE
export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event2
export QT_QPA_FB_HIDECURSOR=0

4 运行

4.1可能出现的问题

可以运行/opt/examples/下面的程序测试一下

4.2可能出现的问题

1.运行无法启动 提示没有找到或者打开linuxfb
打开调试信息
export QT_DEBUG_PLUGINS=1
通过观察输出信息应该是缺少某些库文件
我是出现缺少freetype库文件
2.打开鼠标光标显示
QT5中用QPA替换QWS,但是默认情况下,鼠标的光标不显示。解决方案可参考下面的网站
https://stackoverflow.com/questions/38838198/embedded-qt-mouse-pointer-not-showing-up

export QT_QPA_GENERIC_PLUGINS=evdevmouse
注意:这里必须是鼠标相对应的eventx设备文件 而不能选择mice 或者mousex.我是通过尝试出来的
export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event2
官方文档中说如果没有设置该参数,鼠标就会显示出来。但实际情况是只有把这个环境变量设置为0的时候才会显示鼠标指针
export QT_QPA_FB_HIDECURSOR=0

2017-01-19 10:32:40 pyf09 阅读数 493

1 PC版本


在终端中输入:sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer qt4-qmlviewer 

◆qt4-dev-tools 中包括了Qt Assistant,Qt Linguist,Qt Creator

◆qt4-doc 这个是帮助文档

◆qt4-qtconfig Qt的配置工具,这个装好默认好

◆qt4-demos 官方的一些Demo

◆qt4-designer 可视化窗体设置工具

◆qt4-qmlviewer 和qtcreator相关

安装后,没有安装Qt Creator,在Ubuntu 图形桌面上点击左侧的Ubuntu Software Center,搜索Qt ,选择Qt Creator

完成后,在terminal命令行执行命令 qtcreator启动Qt Creator了


注:如果需要编译特定版本的,如4.8.5,则:

(1) 安装一些依赖包

sudo apt-get install libX11-dev libXext-dev libXtst-dev

(2) 下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz,解压后进入目录

用命令 sudo ./configure -prefix /usr/local/Trolltech/Qt-4.8.5;sudo make;sudo make install即可 


2 ARM版本


注:以下所使用的交叉编译工具为arm-none-Linux-gnueabi  如果使用arm-linux 做相应的修改即可

(1)下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz;
(2) 解压后进入该文件夹,执行.

./configure -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng  -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -fast -lrt

(3) 执行make,及make install命令,一般时间比较长

(4) 完成后修改mkspecs文件的权限,供qt creator使用: sudo chmod 775 mkspecs -R

(5) 配置qt creator:工具->选项->Qt4   找到“手动设置”增加一个,qmake路径填第二步中的安装目录下的qmake路径,”usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake“

(6)配置完成后,打开项目后点左侧“项目”,选择刚才配置的Qt版本即可编译生成arm版程序了


3 移植到ARM

(1)需要将usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib移植到ARM板上相同的位置,将plugins里的.so也移入..../QtEmbedded-4.8.5-arm/lib

(2) 对(1)中的lib/下的.so做链接

ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4.8


ln -s libQtGui.so.4.8.5 libQtGui.so
ln -s libQtGui.so.4.8.5 libQtGui.so.4
ln -s libQtGui.so.4.8.5 libQtGui.so.4.8

......

注:(1)(2) 也可以用压缩打包整个lib,拷贝过去来实现


(3)vi ~/.bashrc 文件,加入

QTDIR=usr/local/Trolltech/QtEmbedded-4.8.5-arm

export QTDIR

PATH=$QTDIR/lib:$PATH

export PATH

LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH


4 一些常见错误

(1) “QMAKESPEC has not been set”,解决方案:sudo gedit ~/.bashrc ,添加内容:export QMAKESPEC=usr/local/Trolltech/QtEmbedded-4.8.5-arm/mkspecs/qws/linux-arm-gnueabi-g++

(2) 安装了多种版本的QT,如果想默认使用QtEmbeddedb版本,可以在上述文件中加入:export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin:$PATH 

(3) 配置完成后,可使用qmake -project;qmake;make进行工程编译

(4) arm开发板的终端打不开,出现"grantpt failed:..."问题,可以输入:mount -o remount,gid=5,mode=620 /dev/pts  回车

(5) Qtcreator配置出现,没有编译链,则可加入GCCE编译链,目标位置就是linux-none-arm-guneabi-g++所在位置

(6) 出现qmlviewer 没有安装的问题,可从/usr/bin里将qml开头的三个可执行文件拷到usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin下

(7) make 出现arm-none-linux-gnueabi-g++命令未找到,如果确定环境变量已经添加,则检查文件所属账号是不是你现在账户;环境变量如果一直不对,可以关掉终端,新开一个,重新设置

(8) 如果开发板运行程序的时候出现 cannot mix incompatible Qt library with this library,查找资料,大家都说最可行性的解决方案是卸干净,重新编译,自己花了好长时间重新编译后,发现还是一样。然后用ldd <filename> 查看了运行文件依赖的库,发现程序有部分链接到了开发板上的Qt库。做了Qt动态库的全部ln(具体见第3部分)


//////////////////////////////////////////////////////////////////////////////////////////////////////由于项目需要,需要加入触屏,编译过程中发现不同与之前的新的问题,记录如下

一 触屏库tslib的编译

1 下载相应的工具

do apt-get install automake
sudo apt-get install autogen
sudo apt-get install autoconf
sudo apt-get install libtool

2 很重要的一步,设置 CC和CXX
export CC=.... ,export CXX=...,一般CC=arm-linux-gcc ,CXX=arm-linux-g++,我的交叉编译环境是arm-none-linux-gnueabi-gcc,arm-none-linux-gnueabi-g++,输入命令 export CC=arm-none-linux-gnueabi-gcc export CXX=arm-none-linux-gnueabi-g++

3 编译
cd tslib
./autogen.sh
echo  "ac_cv_func_malloc_0_nonnull=yes" > arm-none-linux-gnueabi.cache #(这样做到目的是避免出现undefined reference to rpl_malloc错误)
./configure --host=arm-none-linux-gnueabi CC=<你的cc编译器所在路径> CXX=<你的++编译器所在路径> --cache-file=arm-none-linux-gnueabi.cache -prefix=/usr/local/tslib
make
make install

4 检查,可进入/usr/local/tslib/bin 里,file ts_test(或其他文件) 如果显示ARM,表明编译正确,如果显示80386表明你用的不是交叉编译器,而是系统的gcc。
注:因为版本不一致,导致编译QT时一直出现 fail to find tslib function...,加入-verbose选项,打印出/opt/../ld:cannot find -lts(tslib和qt编译器版本不对应造成)。

二 编译QTe 4.8.5

1 编译指令需要改为
./configure -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng  -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -no-xcursor -no-mouse-linuxtp -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib -fast -lrt
不需要鼠标的话就加上绿色的文字,并且修改./src/gui/embedded/qwscursor_qws.h,在文件头部加上#define QT_NO_QWS_CURSOR

2 编译器最好在qws/linux-arm-gnueabi-g++/qmake.conf中指定完全的路径,否则可能出现一些奇怪的错误。

3 qmake.conf中记得加入-lts 在g++ gcc后面
 
三 移植到开发板

如果开发板中没有tslib库,则需要进行移植
1 将tslib库拷到开发板 /usr/local/tslib
2 修改ts.conf 
vi /usr/local/tslib/etc/ts.conf -》#module_raw input前的#去掉
3 vi /etc/profile 添加

export TSLIB_ROOT=/usr/local/tslib export TSLIB_TSDEVICE=/dev/input/event1

export QWS_MOUSE_PROTO=tslib:/dev/input/event1 export TSLIB_CALIBFILE=/etc/pointercal   export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf    export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  export TSLIB_FBDEVICE=/dev/fb0   export TSLIB_CONSOLEDEVICE=none   #避免出现“open console device: No such file or directory KDSETMODE: Bad file descriptor”的错误 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下哪个文件
可用cat /proc/bus/input/devices查看


以上内容参考 http://blog.csdn.net/lanbing510/article/details/23684877

2014-09-11 22:54:10 GZFStudy 阅读数 1068


* *********安装前,系统更新,能够减少未知情况出现

1 PC版本

http://blog.csdn.net/chchchdx123/article/details/6911267

在终端中输入:sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer qt4-qmlviewer 

◆qt4-dev-tools 中包括了Qt Assistant,Qt Linguist,Qt Creator

◆qt4-doc 这个是帮助文档

◆qt4-qtconfig Qt的配置工具,这个装好默认好

◆qt4-demos 官方的一些Demo

◆qt4-designer 可视化窗体设置工具

◆qt4-qmlviewer 和qtcreator相关

安装后,没有安装Qt Creator,在Ubuntu 图形桌面上点击左侧的Ubuntu Software Center,搜索Qt ,选择Qt Creator

完成后,在terminal命令行执行命令 qtcreator启动Qt Creator了


注:如果需要编译特定版本的,如4.8.5,则:

(1) 安装一些依赖包

sudo apt-get install libX11-dev libXext-dev libXtst-dev

sudo apt-get install arm-linux-g++

sudo apt-get install g++

(2) 下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz,解压后进入目录

用命令 sudo ./configure -prefix /usr/local/Trolltech/Qt-4.8.5;sudo make;sudo make install即可 


2 ARM版本


注:以下所使用的交叉编译工具为arm-linux-gnueabi

(1)下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz,并解压,在mkspecs 中qws /linux-arm-gnueabi-g++ 文件夹下的qmake.conf

修改为如下,arm-linux-gnueabi-g++ 为sudo apt-get install arm-linux-g++ 安装在usr/bin 中的

QMAKE_CC                = arm-linux-gnueabi-gcc
QMAKE_CXX               = arm-linux-gnueabi-g++
QMAKE_LINK              = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabi-objcopy
QMAKE_STRIP             = arm-linux-gnueabi-strip


(2) 解压后进入该文件夹,执行.

./configure -prefix  /usr/local/Trolltech/Qt-4.8.5 -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng  -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -fast -lrt

(3) 执行make,及make install命令,一般时间比较长,  进入bin里 ,mv qmake arm-qmake ,重命名

(4) 完成后修改mkspecs文件的权限,供qt creator使用: sudo chmod 775 mkspecs -R

(5) 配置qt creator:工具->选项->Qt4   找到“手动设置”增加一个,qmake路径填第二步中的安装目录下的qmake路径,”usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake“

(6)配置完成后,打开项目后点左侧“项目”,选择刚才配置的Qt版本即可编译生成arm版程序了


3 移植到ARM

(1)需要将usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib移植到ARM板上相同的位置,将plugins里的.so也移入..../QtEmbedded-4.8.5-arm/lib

(2) 对(1)中的lib/下的.so做链接

ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4.8


ln -s libQtGui.so.4.8.5 libQtGui.so
ln -s libQtGui.so.4.8.5 libQtGui.so.4
ln -s libQtGui.so.4.8.5 libQtGui.so.4.8

......

注:(1)(2) 也可以用压缩打包整个lib,拷贝过去来实现


(3)vi ~/.bashrc 文件,加入

QTDIR=usr/local/Trolltech/QtEmbedded-4.8.5-arm

export QTDIR

PATH=$QTDIR/bin:$PATH

export PATH

LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

//////$QTDIR/bin: arm-qmake位置

//////$QTDIR/lib: Qt库位置

4 一些常见错误

(1) “QMAKESPEC has not been set”,解决方案:sudo gedit ~/.bashrc ,添加内容:export QMAKESPEC=usr/local/Trolltech/QtEmbedded-4.8.5-arm/mkspecs/qws/linux-arm-gnueabi-g++

(2) 安装了多种版本的QT,如果想默认使用QtEmbeddedb版本,可以在上述文件中加入:export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin:$PATH 

(3) 配置完成后,可使用qmake -project;qmake;make进行工程编译

(4) arm开发板的终端打不开,出现"grantpt failed:..."问题,可以输入:mount -o remount,gid=5,mode=620 /dev/pts  回车

(5) Qtcreator配置出现,没有编译链,则可加入GCCE编译链,目标位置就是linux-none-arm-guneabi-g++所在位置

(6) 出现qmlviewer 没有安装的问题,可从/usr/bin里将qml开头的三个可执行文件拷到usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin下

(7) make 出现arm-none-linux-gnueabi-g++命令未找到,如果确定环境变量已经添加,则检查文件所属账号是不是你现在账户;环境变量如果一直不对,可以关掉终端,新开一个,重新设置

(8) 如果开发板运行程序的时候出现 cannot mix incompatible Qt library with this library,查找资料,大家都说最可行性的解决方案是卸干净,重新编译,自己花了好长时间重新编译后,发现还是一样。然后用ldd <filename> 查看了运行文件依赖的库,发现程序有部分链接到了开发板上的Qt库。做了Qt动态库的全部ln(具体见第3部分)


//////////////////////////////////////////////////////////////////////////////////////////////////////由于项目需要,需要加入触屏,编译过程中发现不同与之前的新的问题,记录如下

一 触屏库tslib的编译

1 下载相应的工具

do apt-get install automake
sudo apt-get install autogen
sudo apt-get install autoconf
sudo apt-get install libtool

2 很重要的一步,设置 CC和CXX
export CC=.... ,export CXX=...,一般CC=arm-linux-gcc ,CXX=arm-linux-g++,我的交叉编译环境是arm-none-linux-gnueabi-gcc,arm-none-linux-gnueabi-g++,输入命令 export CC=arm-none-linux-gnueabi-gcc export CXX=arm-none-linux-gnueabi-g++

3 编译
cd tslib
./autogen.sh
echo  "ac_cv_func_malloc_0_nonnull=yes" > arm-none-linux-gnueabi.cache #(这样做到目的是避免出现undefined reference to rpl_malloc错误)
./configure --host=arm-none-linux-gnueabi CC=<你的cc编译器所在路径> CXX=<你的++编译器所在路径> --cache-file=arm-none-linux-gnueabi.cache -prefix=/usr/local/tslib
make
make install
4 检查,可进入/usr/local/tslib/bin 里,file ts_test(或其他文件) 如果显示ARM,表明编译正确,如果显示80386表明你用的不是交叉编译器,而是系统的gcc。
注:因为版本不一致,导致编译QT时一直出现 fail to find tslib function...,加入-verbose选项,打印出/opt/../ld:cannot find -lts(tslib和qt编译器版本不对应造成)。
二 编译QTe 4.8.5
参考 http://blog.csdn.net/chchchdx123/article/details/6911267
1 编译指令需要改为
./configure -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng  -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -no-xcursor -no-mouse-linuxtp -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib -fast -lrt
不需要鼠标的话就加上绿色的文字,并且修改./src/gui/embedded/qwscursor_qws.h,在文件头部加上#define QT_NO_QWS_CURSOR
2 编译器最好在qws/linux-arm-gnueabi-g++/qmake.conf中指定完全的路径,否则可能出现一些奇怪的错误。
三 移植到开发板
如果开发板中没有tslib库,则需要进行移植
1 将tslib库拷到开发板 /usr/local/tslib
2 修改ts.conf 
vi /usr/local/tslib/etc/ts.conf -》将#module_raw input前的#去掉
3 vi /etc/profile 添加

TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下哪个文件
可用cat /proc/bus/input/devices查看
具体可参考博客http://blog.163.com/zhuandi_h/blog/static/180270288201222310291262/

[转]ubuntu bits/predefs.h:没有那个文件或目录

解决方法: 1. 确定你的系统是x86_64 GNU/Linux        root@mm-desktop:/home/mm/android#uname -a        Linuxmm-desktop 2.6.27-9-generic #1 SMP Thu Nov 20 22:15:32 UTC 2008  x86_64 GNU/Linux   安装libc6-dev-i386      sudoapt-get install libc6-dev-i386
2. 32位系统:sudoapt-get installlibc6-dev
3. 输入sudoapt-get install gcc-multilib即可
参考
2014-04-14 16:30:28 lanbing510 阅读数 18681

1 PC版本


在终端中输入:sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer qt4-qmlviewer 

◆qt4-dev-tools 中包括了Qt Assistant,Qt Linguist,Qt Creator

◆qt4-doc 这个是帮助文档

◆qt4-qtconfig Qt的配置工具,这个装好默认好

◆qt4-demos 官方的一些Demo

◆qt4-designer 可视化窗体设置工具

◆qt4-qmlviewer 和qtcreator相关

安装后,没有安装Qt Creator,在Ubuntu 图形桌面上点击左侧的Ubuntu Software Center,搜索Qt ,选择Qt Creator

完成后,在terminal命令行执行命令 qtcreator启动Qt Creator了


注:如果需要编译特定版本的,如4.8.5,则:

(1) 安装一些依赖包

sudo apt-get install libX11-dev libXext-dev libXtst-dev

(2) 下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz,解压后进入目录

用命令 sudo ./configure -prefix /usr/local/Trolltech/Qt-4.8.5;sudo make;sudo make install即可 


2 ARM版本


注:以下所使用的交叉编译工具为arm-none-linux-gnueabi  如果使用arm-linux 做相应的修改即可

(1)下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz;
(2) 解压后进入该文件夹,执行.

./configure -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng  -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -fast -lrt

(3) 执行make,及make install命令,一般时间比较长

(4) 完成后修改mkspecs文件的权限,供qt creator使用: sudo chmod 775 mkspecs -R

(5) 配置qt creator:工具->选项->Qt4   找到“手动设置”增加一个,qmake路径填第二步中的安装目录下的qmake路径,”usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake“

(6)配置完成后,打开项目后点左侧“项目”,选择刚才配置的Qt版本即可编译生成arm版程序了


3 移植到ARM

(1)需要将usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib移植到ARM板上相同的位置,将plugins里的.so也移入..../QtEmbedded-4.8.5-arm/lib

(2) 对(1)中的lib/下的.so做链接

ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4.8


ln -s libQtGui.so.4.8.5 libQtGui.so
ln -s libQtGui.so.4.8.5 libQtGui.so.4
ln -s libQtGui.so.4.8.5 libQtGui.so.4.8

......

注:(1)(2) 也可以用压缩打包整个lib,拷贝过去来实现


(3)vi ~/.bashrc 文件,加入

QTDIR=usr/local/Trolltech/QtEmbedded-4.8.5-arm

export QTDIR

PATH=$QTDIR/lib:$PATH

export PATH

LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH


4 一些常见错误

(1) “QMAKESPEC has not been set”,解决方案:sudo gedit ~/.bashrc ,添加内容:export QMAKESPEC=usr/local/Trolltech/QtEmbedded-4.8.5-arm/mkspecs/qws/linux-arm-gnueabi-g++

(2) 安装了多种版本的QT,如果想默认使用QtEmbeddedb版本,可以在上述文件中加入:export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin:$PATH 

(3) 配置完成后,可使用qmake -project;qmake;make进行工程编译

(4) arm开发板的终端打不开,出现"grantpt failed:..."问题,可以输入:mount -o remount,gid=5,mode=620 /dev/pts  回车

(5) Qtcreator配置出现,没有编译链,则可加入GCCE编译链,目标位置就是linux-none-arm-guneabi-g++所在位置

(6) 出现qmlviewer 没有安装的问题,可从/usr/bin里将qml开头的三个可执行文件拷到usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin下

(7) make 出现arm-none-linux-gnueabi-g++命令未找到,如果确定环境变量已经添加,则检查文件所属账号是不是你现在账户;环境变量如果一直不对,可以关掉终端,新开一个,重新设置

(8) 如果开发板运行程序的时候出现 cannot mix incompatible Qt library with this library,查找资料,大家都说最可行性的解决方案是卸干净,重新编译,自己花了好长时间重新编译后,发现还是一样。然后用ldd <filename> 查看了运行文件依赖的库,发现程序有部分链接到了开发板上的Qt库。做了Qt动态库的全部ln(具体见第3部分)


//////////////////////////////////////////////////////////////////////////////////////////////////////由于项目需要,需要加入触屏,编译过程中发现不同与之前的新的问题,记录如下

一 触屏库tslib的编译

1 下载相应的工具

do apt-get install automake
sudo apt-get install autogen
sudo apt-get install autoconf
sudo apt-get install libtool

2 很重要的一步,设置 CC和CXX
export CC=.... ,export CXX=...,一般CC=arm-linux-gcc ,CXX=arm-linux-g++,我的交叉编译环境是arm-none-linux-gnueabi-gcc,arm-none-linux-gnueabi-g++,输入命令 export CC=arm-none-linux-gnueabi-gcc export CXX=arm-none-linux-gnueabi-g++

3 编译
cd tslib
./autogen.sh
echo  "ac_cv_func_malloc_0_nonnull=yes" > arm-none-linux-gnueabi.cache #(这样做到目的是避免出现undefined reference to rpl_malloc错误)
./configure --host=arm-none-linux-gnueabi CC=<你的cc编译器所在路径> CXX=<你的++编译器所在路径> --cache-file=arm-none-linux-gnueabi.cache -prefix=/usr/local/tslib
make
make install

4 检查,可进入/usr/local/tslib/bin 里,file ts_test(或其他文件) 如果显示ARM,表明编译正确,如果显示80386表明你用的不是交叉编译器,而是系统的gcc。
注:因为版本不一致,导致编译QT时一直出现 fail to find tslib function...,加入-verbose选项,打印出/opt/../ld:cannot find -lts(tslib和qt编译器版本不对应造成)。

二 编译QTe 4.8.5

1 编译指令需要改为
./configure -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng  -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -no-xcursor -no-mouse-linuxtp -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib -fast -lrt
不需要鼠标的话就加上绿色的文字,并且修改./src/gui/embedded/qwscursor_qws.h,在文件头部加上#define QT_NO_QWS_CURSOR

2 编译器最好在qws/linux-arm-gnueabi-g++/qmake.conf中指定完全的路径,否则可能出现一些奇怪的错误。

3 qmake.conf中记得加入-lts 在g++ gcc后面
 
三 移植到开发板

如果开发板中没有tslib库,则需要进行移植
1 将tslib库拷到开发板 /usr/local/tslib
2 修改ts.conf 
vi /usr/local/tslib/etc/ts.conf -》#module_raw input前的#去掉
3 vi /etc/profile 添加

export TSLIB_ROOT=/usr/local/tslib export TSLIB_TSDEVICE=/dev/input/event1

export QWS_MOUSE_PROTO=tslib:/dev/input/event1 export TSLIB_CALIBFILE=/etc/pointercal   export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf    export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  export TSLIB_FBDEVICE=/dev/fb0   export TSLIB_CONSOLEDEVICE=none   #避免出现“open console device: No such file or directory KDSETMODE: Bad file descriptor”的错误 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下哪个文件
可用cat /proc/bus/input/devices查看
具体可参考博客http://blog.163.com/zhuandi_h/blog/static/180270288201222310291262/

iotop 移植linux/arm

阅读数 78

libnl移植到ARM Linux

阅读数 2516

libnl移植ARMLinux

博文 来自: zhaoxd200808501

arm linux lua移植

阅读数 164

没有更多推荐了,返回首页