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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值