编译前准备工作
- 平台及资源
主机环境:ubuntu 14.04
开发板 :米尔科技 ARM 335X 系列
tslib:tslib 1.4
编译器:arm-linux-gnueabihf 交叉编译器,最好选择开发板厂商提供的交叉编译工具链 - 交叉编译器配置环境变量
在~/.profile中添加环境变量指定到交叉编译器的bin目录下,例如:
export PATH=$PATH:/home/linux/work/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin
并执行 source ~/.profile 使配置生效
使用 arm-linux-gnueabihf-gcc -v 命令查看当前版本号,同时检查环境变量配置是否生效。
编译tslib 1.4
- 进入tslib目录 运行 ./autogen.sh 可能会有warning警告,但不用在意。
- ./autogen.sh运行完成后会生成 configure 文件,编写一个脚本执行configure文件:
mkdir auto.sh
vi auto.sh
#!/bin/sh
##make clean 清除错误编译后的可执行文件和配置文件
##make distclean 清除错误编译生成的所有文件
make clean && make distclean
## tslib交叉编译时configure会出错,原因是ac_cv_func_malloc_0_nonnull检查引起的
##为了不让它检查,我们新建一个arm-linux.cache的缓存文件,直接让ac_cv_func_malloc_0_nonnull=yes
##再让configure去识别这个缓存文件,达到欺骗configure的目的
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
## host指定交叉编译的目标平台,prefix指定交叉编译目标文件的路径,CC指定交叉编译使用的编译器,cache-file指定为我们自己的缓存文件
./configure --prefix=/home/zzl/arm2/tslib2 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --cache-file=arm-linux.cache
-
开始编译
终端输入:
bash auto.sh
make -j4
make install
- 到–prefix指定的目录看看是否生成目标文件
zzl@ubuntu:~/arm2/tslib2$ ls
bin etc include lib
zzl@ubuntu:~/arm2/tslib2$ cd bin
zzl@ubuntu:~/arm2/tslib2/bin$ ls
ts_calibrate ts_harvest ts_print ts_print_raw ts_test
zzl@ubuntu:~/arm2/tslib2/bin$ file ts_calibrate
ts_calibrate: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=33905d56010cc4eab3f812205d0ddae8c3294b2f, not stripped
使用file命令可以看到编译出来的可执行文件以及是ARM架构的了
开始安装
- 将生成的目标文件拷贝至开发板(推荐使用scp上传至开发板)
- 开始配置环境变量
ssh登录开发板
打开profile:vi /etc/profile 添加:
export TSLIB_TSDEVICE=/dev/input/event1 指定触摸屏设备
export TSLIB_CALIBFILE=/etc/pointercal 指定触摸屏校准文件 pintercal 的存放位置
export TSLIB_CONFFILE=/arm/tslib/etc/ts.conf 指定TSLIB配置文件的位置
export TSLIB_PLUGINDIR=/arm/tslib/lib/ts/ 指定触摸屏插件所在路径
export TSLIB_CONSOLEDEVICE=/dev/tty1 设定控制台设备
export TSLIB_FBDEVICE=/dev/fb0 指定帧缓冲设备
3.接下来可以测试tslib
进入tslib的bin目录:
cd /arm/tslib/bin
./ts_calibrate 校准触摸屏 (该功能会生成一个pontercal的屏幕校准文件在TSLIB_CALIBFILE指定目录下)
./ts_test 测试触摸屏