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

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

相关文章:

  • 适合安卓开发工程师在 Android Studio 上使用的 AI 产品
  • A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第一部分
  • 1.FastAPI简介与安装
  • Prometheus 和 Grafana科普介绍
  • 有emacs org babel, 还要什么数据分析软件
  • Git版本管理 | 基础指令汇总
  • 极空间NAS部署gitea教程
  • 初始OpenCV
  • ## DeepSeek写射击手机小游戏
  • Redis GeoHash 详解
  • 深入理解 C# 反射 的使用
  • Redis常用进阶 存储原理和主从思路
  • 前端利用Turf.js实现对地图上的点聚合算法
  • 基于HTML5的连连看游戏开发实践
  • 天梯赛L2-003 月饼满分(笔记)
  • 基于mediapipe深度学习的运动人体姿态提取系统python源码
  • 汇川EASY系列之以太网通讯(MODBUS_TCP做从站)
  • RocketMQ分布式场景篇
  • C语言自定义类型【结构体】详解,【结构体内存怎么计算】 详解 【热门考点】:结构体内存对齐
  • tauri2项目在本地启动一个服务器,并支持控制停止还是启动
  • 解放日报:中国大模型企业的发展机遇已经到来
  • 浦发银行一季度净利175.98亿增1.02%,不良率微降
  • 在岸、离岸人民币对美元汇率双双升破7.26关口
  • 企业取消“大小周”引热议,半月谈:不能将显性加班变为隐性加班
  • 今年一季度全国社会物流总额达91万亿元,工业品比重超八成
  • 西班牙遭遇史上最严重停电,已进入国家紧急状态