Linux上的`i2c-tools`工具集的编译构建和安装
源码复制到Ubuntu系统中并解压
的i2c-tools工具集的源码百度网盘下载链接:
https://pan.baidu.com/s/1XNuMuT1auT1dMzYo3LAFmw?pwd=i6xe

终端进入源码目录
cd /home/book/mybuild/i2c-tools-4.2
执行编译构建命令
运行下面的命令进行编译构建
make CC=${CROSS_COMPILE}gcc
前提是你配置好了gcc交叉编译环境哈,详情见 https://blog.csdn.net/wenhao_ir/article/details/144326545


我们任选一个生成的可执行文件看是否是ARM架构的:

就选上图中的可执行程序i2cdetect吧,执行下面的命令:
readelf -h /home/book/mybuild/i2c-tools-4.2/tools/i2cdetect

可见没有问题。
make install导出要进行部署的文件
先在目录/home/book/mybuild/i2c-tools-4.2下新建目录tmp:

然后运行下面的命令把最终要进行部署的文件导出到当前目录下的tmp目录中:
make install DESTDIR=$PWD/tmp

然后tmp目录就有了我们需要部署的文件,如下图所示:

头文件如下:

库文件如下:

可执行程序如下:

部署i2c-tools到Ubuntu和开发板上
部署i2c-tools到Ubuntu上是为了编译生成使用了i2c-tools的函数的代码。
部署i2c-tools到开发板上为了运行使用了i2c-tools的函数的可执行程序。
复制头文件到交叉编译器的相关目录中
参考博文 https://blog.csdn.net/wenhao_ir/article/details/144621008 【搜索“inlude目录里是头文件”】
i2c-tools工具集的头文件如下:

需要把i2c-tools工具集的头文件smbus.h复制到下面这个目录中:
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include
i2c-tools工具集的头文件的百度网盘下载地址:
https://pan.baidu.com/s/1tPZ_RFUqStLMC_3xVaTSDw?pwd=74rs

如果头文件比较多并且有子目录嵌套,那怎么办呢?具体的方法见博文 https://blog.csdn.net/wenhao_ir/article/details/144844740 【搜索“默认路径中嵌套子目录怎么办”】
复制可执行程序到开发板的/usr/sbin/目录下
把下面这些ELF可执行程序依次复制到开发板的/usr/sbin/目录下:

但是由于我的开发板上已经有这些文件了,这里就不复制了,如下图所示:

注意:复制完了要为这些程序添加执行权限,比如下面命令:
chmod +x i2cdetect
不需要复制库文件到Ubuntu的相关目录中
经我测试,即使把库文件复制到gcc交叉编译器的伪文件系统的目录/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib中,在进行交叉编译时,如果使用下面的命令:
arm-buildroot-linux-gnueabihf-gcc -o my_program my_program.c -li2c
仍然提示搜索不到相应的动态库文件,原因如下:
虽然目录/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib是gcc交叉编译器的默认搜索目录,但是它在搜索时不会进入它的子目录进行搜索。
由于这里库文件不像头文件只有一个,所以我们就不要复制到默认搜索的目录了,我们在编译时指定库文件的路径即可,比如用下面的命令指定库i2c-tools的库目录进行编译:
arm-buildroot-linux-gnueabihf-gcc -o my_program my_program.c -L/home/book/mybuild/i2c-tools-4.2/tmp/usr/local/lib -li2c
一个测试实例
详见博文 https://blog.csdn.net/wenhao_ir/article/details/146361457 【搜索“利用i2c-tools工具集对I2C设备AP3216C进行读写操作”】
附i2c-tools工具集的源码
未经编译构建的源码
https://pan.baidu.com/s/1XNuMuT1auT1dMzYo3LAFmw?pwd=i6xe
经过编译构建的源码
https://pan.baidu.com/s/1e6BSEUSxgeKwm_WlPlHAWg?pwd=t9v2
相关文章:
Linux上的`i2c-tools`工具集的编译构建和安装
源码复制到Ubuntu系统中并解压 的i2c-tools工具集的源码百度网盘下载链接: https://pan.baidu.com/s/1XNuMuT1auT1dMzYo3LAFmw?pwdi6xe 终端进入源码目录 cd /home/book/mybuild/i2c-tools-4.2执行编译构建命令 运行下面的命令进行编译构建 make CC${CROSS_COM…...
langgraph简单Demo(使用langserve实现外部调用)
前言 这个示例是研究如何使用langserve实现外部调用 接入大模型参考文章:接入阿里云百炼 1、安装依赖 pip install langserve fastapi uvicorn pip install sse_starlette 2、代码实现 from fastapi import FastAPI from langchain_core.messages import HumanM…...
【C#高阶编程】—单例模式详解
C# 单例模式 单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式常用于需要全局唯一对象的场景,比如配置文件管理、日志记录、数据库连接池等。 单例模式的核心特点 私有构造函数:…...
折叠树报表
折叠树报表中包含了三种信息: 1.树组织信息-可展开、收拢 2.节点的统计信息(汇总求和) 3.每个节点对应的数据信息 一、准备数据 mysql8 数据库中存在两张表 org和store表。 org表和部分数据如下,其中orgname是组织的名称,codepath是完整的组织代码,seq是每个节点的顺序,可…...
Python个人学习笔记(16):模块(os)
四、os模块 主要用于文件夹处理 (一)文件夹相关 os.makedirs(‘dirname1/dirname2’) :创建文件夹目录,不能重复创建,用的多 代码: os.makedirs(a/b/c)结果: os.removedirs(‘dirname1’)&…...
虚拟地址空间(下)进程地址空间(上)
一.关于页表组成 1.权限(rwx) 作用:如1.让代码区变成只读的 2.写时拷贝的实现:子进程创建时其页表指向的父进程代码和数据权限都是只读的,子进程试图修改,触发错误,系统开始写时拷贝。 来源:…...
【数据集分享】青藏高原两次强震玛多地震和漾濞地震的震源过程
2021年5月21日,5小时内在青藏高原不同区域发生了漾濞6.4级和玛多7.4级强烈地震,表明印度板块和欧亚大陆板块的碰撞汇聚作用下青藏高原持续和频繁的 剧烈构造运动和地震活动。本研究利用地震记录和空间对地观测同震位移资料(InSAR)…...
jmeter环境搭建及使用
Meter 是一个开源的性能测试工具,用于测试静态和动态资源的性能。 1、安装 官网下载: 下载地址:Apache JMeter - Download Apache JMeter 网盘下载: 通过百度网盘分享的文件:apache-jmeter-5.6.3.rar 链接&#x…...
Python 鼠标轨迹算法 - 防止游戏检测
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
网络编程--服务器双客户端聊天
写一个服务器和客户端 运行服务器和2个客户端,实现聊天功能 客户端1和客户端2进行聊天,客户端1将聊天数据发送给服务器,服务器将聊天数据转发给客户端2 要求: 服务器使用 select 模型实现 ,客户端1使用 poll 模型实现…...
yum软件包乾坤大挪移(Yum Package Qiankun Great Migration)
yum软件包乾坤大挪移 背景 由于很多的生产环境是无法连接外网的,因此用yum或者dnf命令来安装软件包常常是一个比较麻烦的事情,原因是很多软件的依赖很复杂,如果要一个个下载、拷贝、再安装,这往往是一个非常繁琐冗杂的过程&…...
Java:读取中文,read方法
public static void main(String[] args) throws IOException {FileReader fr new FileReader("C:\\aaa\\a.txt");//字符流的底层也是一个字节一个字节读取的,遇到中文就一次读多个,GBK一次读两个,UTF-8一次读三个字节//idea默认U…...
[GHCTF 2025]真会布置栈吗?
题目是一个聊天室,我们先按照题目使用 /help Help: /help 显示此帮助信息 /msg [text] 在当前频道发送消息 /nick [name] 更改你的用户名 /list 列出可用的频道 /join [channel] 切换到不同的频道 /channel …...
集合的练习1-2
//练习1: import java.util.ArrayList;public class ArraylistTest1 {public static void main(String[] args){ArrayList<String> listnew ArrayList<>();//需求:定义一个集合,添加字符串,并进行遍历//遍历格式&…...
英语词性--数词
文章目录 数词概念数词分词基数词序数词 基数与序数词的区别基变序的规律 数词概念 数词(Numerals) 是英语中用于表示 数量(基数)或顺序(序数) 的词类,通常用于描述数字、计数、顺序等。 例如&…...
面试整理--一个报告生成的方案解析
最近又快到了年后找工作的时间,近期写点工作积累,供大家参考。 欢迎关注公主号【测试开发备忘录】,交流职场技巧和经验 首先从工作中一个报错来展开: Start directory is not importable: 错误信息 "Start directory is not importable…...
C#零基础入门篇(18. 文件操作指南)
## 一、文件操作基础 在C#中,文件操作主要通过System.IO命名空间中的类来实现,例如File、FileStream、FileInfo等。 ## 二、常用文件操作方法 ### (一)文件读取 1. **使用File.ReadAllText方法读取文件内容为字符串** …...
Linux 一步部署DHCP服务
#!/bin/bash #脚本作者和日期 #author: PEI #date: 20250319 #检查root权限 if [ "$USER" ! "root" ]; then echo "错误:非root用户,权限不足!" exit 0 fi #防火墙与高级权限 systemctl stop firewa…...
如何打造安全稳定的亚马逊采购测评自养号下单系统?
在当今的电商领域,亚马逊作为全球领先的在线购物平台,其商品种类繁多,用户基数庞大,成为了众多商家和消费者的首选。而对于一些需要进行商品测评或市场调研的用户来说,拥有一个稳定、安全的亚马逊账号体系显得尤为重要…...
【大模型学习】第二十四章 生成式人工智能(GAI)简介
目录 一、什么是生成式人工智能(GAI)? 二、核心技术原理 三、典型应用场景 四、技术特点与挑战 五、训练优化策略 六、关键性能指标(2025年基准) 七、技术演进方向: 一、什么是生成式…...
Pytorch中layernorm实现详解
平时我们在编写神经网络时,经常会用到layernorm这个函数来加快网络的收敛速度。那layernorm到底在哪个维度上进行归一化的呢? 一、问题描述 首先借用知乎上的一张图,原文写的也非常好,大家有空可以去阅读一下,链接放…...
YOLO11报错:AttributeError: module ‘torch‘ has no attribute ‘OutOfMemoryError‘
事情是这样的:前几天YOLO11的代码还是可以训练的,昨天训练了一天,今天换模型就报这个错。 AttributeError: module torch has no attribute OutOfMemoryError我查了一下:YOLO11官方代码issues里面也有人有同样的问题,…...
基于java的ssm+JSP+MYSQL的高校四六级报名管理系统(含LW+PPT+源码+系统演示视频+安装说明)
作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…...
Starrocks 命令 Alter table DISTRIBUTED 重分布数据的实现
背景 在前文Starrocks 写入报错 primary key memory usage exceeds the limit中,可以通过ALTER TABLE xxxx DISTRIBUTED BY HASH(xx) BUCKETS 50;来改变数据的分布状态,具体的执行过程是怎么样的呢? 分析 首先对应的g4文件中为 alterTableStatement &…...
ns3使用入门_基于ns3.44_Part2_配置模块参数的Configuration 和Attributes
前言 事实上ns3的官方手册很全,相关书籍也是有的,官网先贴在这里: ns-3 | a discrete-event network simulator for internet systemsa discrete-event network simulator for internet systemshttps://www.nsnam.org/相关的脚本介绍也都有一些: ns-3.35_wifi-he-networ…...
性能测试过程实时监控分析
性能监控 前言一、查看性能测试结果的3大方式1、GUI界面报告插件2、命令行运行 html报告3、后端监听器接入仪表盘 二、influxDB grafana jmeter测试监控大屏1、原理:2、linux环境中influxDB 安装和配置3、jmerer后端监听器连接influxDB4、linux环境总grafana环境搭…...
Springboot List集合的校验方式
pom.xml 引入 <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.2.0.Final</version></dependency><dependency><groupId>org.springframework.b…...
C程序设计(第五版)及其参考解答,附pdf
通过网盘分享的文件:谭浩强C语言设计 链接: https://pan.baidu.com/s/1U927Col0XtWlF9TsFviApg?pwdeddw 提取码: eddw 谭浩强教授的《C程序设计》是C语言学习领域的经典教材,其内容深入浅出,适合不同层次的学习者。 一、教材版本与特点 最…...
【蓝桥杯速成】| 7.01背包练习生
题目一:分割等和子集 问题描述 416. 分割等和子集 - 力扣(LeetCode) 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:…...
杰理科技JL703N双模蓝牙芯片—云信
杰理科技JL703N芯片运算能力、接收灵敏度、发射功率、音频性能等指标均处于行业一流水平,能满足多场景的应用需求,具有以下明显优势: 一、高性能双核浮点CPU,算力十足 JL703N芯片搭载了32位高性能双核CPU,主频高达32…...
