配置编译安装arm平台qt库qt-everywhere-opensource-src-4.8.5

来源:互联网 发布:日本建筑风格 知乎 编辑:程序博客网 时间:2024/04/30 22:41

【目标板】tiny6410

【虚拟机】Ubuntu-13.04

【编译器】arm-linux-gcc 4.3.2

触摸屏软件 tslib1.4.tar.gz tslib是触摸屏校准的库,这个是tslib源码,可以移植到嵌入式设备中对触摸屏进行校准在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。

Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。在Qtopia 4.*版本中,默认的Tslib版本为Tslib 1.4。在Qtopia 2.*版本中,默认的Tslib版本为Tslib 1.3

1.解压缩:tar -zxvf tslib1.4.tar.gz

2.运行./autogen.sh

./autogen.sh: 4: autoreconf: not found
 是在不同版本的 tslib 下执行 autogen.sh 产生。它们产生的原因一样,是因为没有安装
  automake 工具,      (ubuntu 8.04)用下面的命令安装好就可以了。
  sudo apt-get install autoconf automake libtool

3.运行
./configure --host=arm-linux --prefix=/opt/tslib-1.4  ac_cv_func_malloc_0_nonnull=yes
4.make
在make时出错,提示
In function ‘open’,
inlined from ‘main’ at ts_calibrate.c:229:11:
/usr/include/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[2]: *** [ts_calibrate.o] Error 1

解决方法:
这是因为open函数的语法不符合最新的gcc,在/tests/ts_calibrate.c中加入open的第三个参数0777:
if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);
} else {
cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);

}

5.make install

编译安装成功如下图:


———————————————————————————————————————————————————————————————————

配置编译安装ARM平台qt:  下载页面:http://qt-project.org/downloads

选择 Qt libraries 4.8.5 for Linux/X11 (230 MB) (Info) 得到qt-everywhere-opensource-src-4.8.5.tar.gz,这个和 Qt libraries 4.8.5 for embedded Linux (230 MB) (Info) 是同一个文件,配置不同就可以编译出不同的版本

  1.

./configure -v -prefix /opt/qt-4.8.5-arm -opensource -confirm-license -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -qt3support -no-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -make examples -make demos -make translations -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -I/opt/tslib-1.4/include -L/opt/tslib-1.4/lib


如果在configure时出错,提示

You might need to modify the include and library search paths by editingQMAKE_INCDIR and QMAKE_LIBDIR in/home/Raymond/qt-embedded-arm-tslib/mkspecs/qws/linux-arm-g++.

解决办法:

是arm-linux-gcc的路径没有添加到系统变量中

1.修改profile文件:

#vi /etc/profile

在里面加入:export PATH="$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin"

2.修改.bashrc文件:

# vi /root/.bashrc

在里面加入:export PATH="$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin"

注意修改后的更新,如source /etc/profile

2. make

如果出现如下错误:
cc1:error:.pch/release-shared-emb-arm/QtGui:NO such file or directory
在配置时添加参数:    -no-pch


如果出现如下错误:

make[1]: 正在进入目录 `/home/duliqun/qt-everywhere-opensource-src-4.8.5/src/corelib'
g++ -c -include .pch/release-shared-emb-arm/QtCore -pipe -I/opt/tslib-1.0/include -fno-exceptions -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_QLOCALE_USES_FCVT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DELF_INTERPRETER=\"\" -DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_DEBUG -I../../mkspecs/linux-g++ -I. -I../../include -I../../include/QtCore -I.rcc/release-shared-emb-arm -Iglobal -I../3rdparty/zlib -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I.moc/release-shared-emb-arm -o .obj/release-shared-emb-arm/qabstractanimation.o animation/qabstractanimation.cpp
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h: Assembler messages:
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %cl,%dl,[%ebp]'
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %dl,%sil,[%ebp]'

可能是arm 交叉环境有问题,如果配置好了一般reconfigure下就ok.如果总是有问题,可以修改qatomic_armv5.h,将汇编用c code写可以避过这个错误。
vi ​/home/duliqun/qt-everywhere-opensource-src-4.8.5/src/corelib/arch/qatomic_armv5.h
inline char q_atomic_swp(volatile char *ptr, char newval)
{
register char ret;
/*asm volatile("swpb %0,%2,[%3]"
: "=&r"(ret), "=m" (*ptr)
: "r"(newval), "r"(ptr)
: "cc", "memory");*/
ret=*ptr;
*ptr=newval;
return ret;
}

如果出现如下错误:
In file included from ssl/qsslsocket_openssl_symbols_p.h:57:0,    from ssl/qsslcertificate.cpp:110:
ssl/qsslsocket_openssl_p.h:66:26: 致命错误: openssl/asn1.h:没有那个文件或目录编译中断。
make[1]: *** [.obj/release-shared-emb-arm/qsslcertificate.o] 错误 1
make[1]:正在离开目录 `/home/duliqun/qt-everywhere-opensource-src-4.8.5/src/network'
make: *** [sub-network-make_default] 错误 2
请执行:  
sudo apt-get install openssl 
sudo apt-get install libssl-dev


3.make  install 编译安装成功。

原创粉丝点击