嵌入式Linux自学阶段性总结(2)
2019-07-13 00:15发布
生成海报
-
修改qtopia源码,配置和交叉编译
a.安装arm-linux-gcc-3.4.1
网上下载arm-linux-gcc3.4.1,直接解压后,把usr目录覆盖到ubuntu根目录,然后在~/.bashrc添加/usr/local/arm/3.4.1/bin 到 PATH,测试:arm-linux-gcc -v 成功显示版本。
b.编译tslib-1.4触摸屏驱动
qtopia自带有触摸屏驱动和校准程序,这里我为了提高性能,采用tslib1.4的第三方库。
解压tslib1.4,进入该目录执行:
# cd tslib
# echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache
# export CC=arm-linux-gcc
# export CXX= arm-linux-g++
# ./autogen.sh
# ./configure --prefix=/opt/tslib1.4-install --host=arm-linux --cache-file=arm-linux.cache
# make
# sudo make install
注意:因为使用了arm-linux-gcc/g++编译,所以应该确保先安装了arm-linux-gcc3.4.1,同时应该事先mkdir目录/opt/tslib1.4-install,同时安装了sudo apt-get install autoconf,否则./autogen.sh时会找不到工具autoreconf.然后还需要sudo apt-get install libtool,否则在重新./autogen.sh时又找不到libtoolize。在这里,开始下了个svn版本的tslib1.4,出了个很妖的问题,make中找不到变量定义。后来用这个tslib-1.4.tar.gz版本,一切OK了。不过arm-linux.cache不能省略,否则还会出问题。
c.修改qtopia源码
1>.解压qtopia-opensource-src-4.3.2..tar.gz后,进入该目录src/libraries/qtopiabase下,复制下面两个头文件并重命名,命令为:
# cd src/libraries/qtopiabase
# cp custom-linux-generic-g++.h custom-linux-arm-g++.h
# cp custom-linux-generic-g++.cpp custom-linux-arm-g++.cpp
如果对于某些版本的qtopia,并没有前一个./cpp文件,可以找其他类似的复制重命名就可以了.关键重命名成custom-<目标平台>-g++.h/cpp就可以.不需要在custom-linux-arm-g++.cpp中修改#include "custom-linux-arm-g++.h",因为根本就没有包含它的头文件,该头文件只是定义特定设备的参数或者宏.
2>.qtopia时区修改.否则qtipia运行时候会到“/usr/share/zoneinfo/”读取.这一步适合使用Ramdisk文件系统,而根文件系统又没有“/usr/share/zoneinfo/”目录的情况.如果移植给开发板的根文件系统有这个目录,则不要进行这步.我的嵌入式linux文件系统下有/usr/share/zoneinfo目录,就算没有,我可以最后创建,所以不修改。
另外一种更简洁且安全的解决方法是,在1>步中复制后重命名的头文件(或者src/qtopiacore/qconfig-qpe.h)中,加上宏定义:#define QTOPIA_ZONEINFO_PATH "/opt/qtopia4.3.2/target/zoneinfo/" ,注意最后编译完后要把主机/usr/share/zoneinfo/内容考到设置的时区信息目录中。
3>.裁减Qtopia core的库,主要是注释或者不注释掉qtopiacore/qconfig-qpe.h中宏定义,这些宏的作用在该文件中都有说明.注意QT_NO_QWS_CURSOR, QT_NO_QWS_MOUSE, QT_NO_QWS_MOUSE_AUTO等宏的功能。
qconfig-qpe.h拷贝到global目录。
# cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/global
这里其他的几个头文件也可能需要修改,比如qfeatures.h,qglobal.h,这些文件中可以定制qpe显示的样式,修改窗口的效果等等.以后用到再深入学习吧!
4>.修改3.4.1版的arm编译器的文件
# cd /usr/local/arm/3.4.1/
# vi arm-linux/include/linux/videodev2.h
在其中添加如下内容:
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1')
/* 8 BGBG.. GRGR.. */
保存退出。
# vi arm/3.4.1/arm-linux/sys_include/linux/videodev2.h
在其中添加如下内容:
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1')
/* 8 BGBG.. GRGR.. */
保存退出。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮