当前位置: 首页 > news >正文

从0开始学linux韦东山教程第四章问题小结(5)

  本人从0开始学习linux,使用的是韦东山的教程,在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。说实在的越看视频越感觉他讲的有点乱后续将以他的新版PDF手册为中心,视频作为辅助理解的工具。参考手册为嵌入式Linux应用开发完全手册V5.3_IMX6ULL_Pro开发板。
摘要:这节课中文档内容非常少,后续我将视频看完后,写的这节博客。这节博客主要讲的是,查看任务节点,上传tslib-1.21文件在文件上传使容易遇见的小错误,编译tslib-1.21文件包并测试,tslib库写手指距离测量代码,也是从这章开始我的开发板再也回不到以前的亮屏状态,但是其他功能可以正常实现。
摘要关键词:任务节点、tslib-1.21

本文详细介绍以下问题,如果你遇到了以下问题,看看我的方案能否解决。

1.查看任务节点
2.上传tslib-1.21文件
3.编译tslib-1.21文件包并测试
4.tslib库写手指距离测量代码

1.查看任务节点

lsof /dev/input/event*

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
你的节点不对反馈的消息是有问题的。

2.上传tslib-1.21文件

在这里插入图片描述
在这里插入图片描述

tar xvf tslib-1.21.tar

在这里插入图片描述
解压的时候得注意,千万不要用win11解压后在上传给ubuntu,这样会出现权限不足以及没有这个命令等一系类问题。至于为什么会导致这个问题,本人猜测应该是win11中环境不一样肯定产生了别的东西。

3.编译tslib-1.21文件包并测试

./configure --host=arm-buildroot-linux-gnueabihf --prefix=/
make
make install DESTDIR=$PWD/tmp

./configure --host=arm-buildroot-linux-gnueabihf --prefix=/:这个命令用于配置编译环境,为你的系统生成一个适合的 Makefile。在运行 make 之前,通常需要先运行
–host=arm-buildroot-linux-gnueabihf:这是一个交叉编译的选项,告诉配置脚本你希望构建的目标系统是 arm-buildroot-linux-gnueabihf
–prefix=/:这个选项告诉 configure 安装程序将程序安装到 / 目录下
make:这个命令基于 Makefile 编译软件。
make install:这个命令将编译完成的软件安装到你指定的目录。
DESTDIR=$PWD/tmp:这个选项用于修改安装目标路径。也就是安装到相对路径的tmp中了

echo 'main(){}'| arm-buildroot-linux-gnueabihf-gcc -E -v -

1. echo ‘main(){}’:这个命令会将字符串 ‘main(){}’ 输出到标准输出(通常是终端)。‘main(){}’ 是一个简单的 C 程序的主体部分,表示一个空的 main 函数。
2. |:管道符,用于将前一个命令的输出传递给下一个命令作为输入。在这个例子中,echo ‘main(){}’ 的输出被传递给 arm-buildroot-linux-gnueabihf-gcc 命令。
3. arm-buildroot-linux-gnueabihf-gcc:这是一个交叉编译器,它用于将 C 代码编译为针对 ARM 架构的机器代码。这个交叉编译器的名称中包含了 arm、gnueabihf(表示硬件浮点支持),因此它用于生成 ARM 架构的二进制代码。
4. -E:这是 gcc 编译器的一个选项,表示只进行预处理阶段(Preprocessing),即仅处理宏替换、头文件包含、条件编译等操作,而不进行编译和链接。输出的是预处理后的代码。
5. -v:这个选项会让编译器在执行时输出详细的调试信息,包括编译器的版本、路径信息以及在编译过程中使用的命令等。
总结就是这行指令是确定工具链中头文件、库文件目录的

cd tslib-1.21/tmp/
cp include/* /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/7.5.0/include
cp -d lib/*so* /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/7.5.0/../../../../arm-b
uildroot-linux-gnueabihf/lib

cp include/* /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/…/lib/gcc/arm-buildroot-linux-gnueabihf/7.5.0/include:这条命令将 include 目录下的所有文件复制到目标路径 /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/gcc/arm-buildroot-linux-gnueabihf/7.5.0/include 目录

cp -d lib/so /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/…/lib/gcc/arm-buildroot-linux-gnueabihf/7.5.0/…/…/…/…/arm-buildroot-linux-gnueabihf/lib:这条命令将 lib 目录下所有包含 .so 字符串的文件复制到目标路径。
目标路径是 /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf/lib,这个路径指向编译工具链的库文件存放位置。

在这里插入图片描述
架构不匹配:

如果你在 x86 系统上尝试运行 ARM 架构的二进制文件(比如从交叉编译中得到的文件),就会出现此错误。
同样,如果你在 ARM 设备上尝试运行为 x86 架构编译的二进制文件,也会出现类似错误。
解决办法:确认目标平台和二进制文件的架构是否匹配,就是最开始忘记输入那3行命令行了。

在这里插入图片描述
再然后重新完成一遍配置流程后,打开root发现ls没有输出,稀奇古怪。然后我跟着视频尝试打开文件地址发现就没有,最后还是按照手册测试成功的,一定要按照手册来。

在这里插入图片描述
在这里插入图片描述

4.tslib库写手指距离测量代码

export ARCH=arm 
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/binarm-buildroot-linux-gnueabihf-gcc -o  mt_cal_distance  mt_cal_distance.c -ltsadb push mt_cal_distance /root
./mt_cal_distance

在这里插入图片描述
最开始出现上图的错误的时候是由于没有 -lts,所以没有找到这个函数。
-lts 表示编译时链接 libts 库。这是一个简写形式,通常与某些特定功能相关,像是事件时间戳、实时系统相关的功能等。

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/571783.html

相关文章:

  • Java项目:基于SSM框架实现的学生二手书籍交易平台管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+任务书+开题】
  • 猿人学js逆向比赛第一届第六题
  • excel 待办日历软件(需要宏)特别推荐
  • 《挑战你的控制力!开源项目小游戏学习“保持平衡”开发解析:用HTML+JS+CSS实现物理平衡挑战》​
  • 吉林大学软件工程章节测试答案-第八章
  • 数学基础(线性代数、概率统计、微积分)缺乏导致概念难以理解问题大全
  • 每日一篇博客:理解Linux动静态库
  • 一文学懂快浮点数据格式
  • 【深度学习】卷积神经网络(CNN):计算机视觉的革命性引擎
  • 蚂蚁百宝箱+MCP打造p 人解放神器agent,解放大脑
  • 设置环境变量(linux,windows,windows用指令和用界面)
  • HarmonyOS性能优化——感知流畅优化
  • 鸿蒙网络编程系列54-仓颉版实现Smtp邮件发送客户端
  • LVS +Keepalived 高可用群集
  • 51c大模型~合集141
  • maven编译报错java: Compilation failed: internal java compiler error
  • 基于C++实现(控制台)机械提取词频
  • Hive的分区表(静态分区、动态分区)、分桶表、四种排序方式和数据加载方式
  • Linux操作系统之进程(六):进程的控制(上)
  • 鼎捷T100开发语言-Genero FGL 终极技术手册
  • Linux软件管理包-yum和基础开发工具-vim
  • 6.18 redis面试题 日志 缓存淘汰过期删除 集群
  • 【Leetcode】每日一题 —— No.2966
  • milvus和attu的搭建
  • 八种常见的神经网络介绍
  • Ubuntu 使用kubeadm部署k8s系统组件反复重启的问题
  • LVS +Keepalived高可用群集
  • 物联网控制技术期末复习 知识点总结 第六章 物联网控制算法(PID算法 PWM算法)
  • vscode连接不上服务器问题修复
  • 如何运用 AI 工具运营海外社媒账号