编译前准备工作
- 平台及资源
主机环境: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目录 运行 ./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
- 【tslib ARM平台交叉编译记录】开始编译
终端输入:
bash auto.sh
make -j4
make install
- 到–prefix指定的目录看看是否生成目标文件
文章图片
zzl@ubuntu:~/arm2/tslib2$ ls
binetcincludelib
zzl@ubuntu:~/arm2/tslib2$ cd bin
zzl@ubuntu:~/arm2/tslib2/bin$ ls
ts_calibratets_harvestts_printts_print_rawts_test
zzl@ubuntu:~/arm2/tslib2/bin$ file ts_calibrate
ts_calibrate: ELF 32-bit LSBexecutable, 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测试触摸屏
推荐阅读
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- 嵌入式-外设|DDR3基础详解
- ffmpeg|从零开始仿写一个抖音App——基于FFmpeg的极简视频播放器
- #|Multimedia
- USB转串口|USB转四串口芯片CH9344
- python|Python的DEBUG LOG
- ARM的C语言程序优化
- linux|【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)
- linux进程通信(一)--共享内存+信号量,代码示例
- C|堆和栈