源码复制到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