编译安装libmodbus库

下载libmodbus库源码

git clone git://github.com/stephane/libmodbus

若报错:fatal: Unable to look up github.com (port 9418)

报错如下

fatal: Unable to look up github.com (port 9418) (未知的名称或服务)

使用如下命令清理缓存

npm cache clean --force

在这里插入图片描述
在这里插入图片描述
清理完缓存就可以下载了,新建一个文件夹modbus并下载
在这里插入图片描述

若报错:The unauthenticated git protocol on port 9418 is no longer supported.

报错如下
在这里插入图片描述
(可能的)解决方案为:

  • 项目clone有问题的,改用https协议或者ssh
  • npm安装有问题

这里解决办法为:把git换为https

sudo git clone https://github.com/stephane/libmodbus

在这里插入图片描述

安装

下载好后会出现一个libmodbus的文件夹在当前目录下

cd libmodbus

还需要安装libtool工具

sudo apt-get install libtool

在这里插入图片描述
然后执行autogen.sh文件

sudo ./autogen.sh

报错
在这里插入图片描述
原因:没有安装automake工具,执行下面命令安装

sudo apt install autoconf automake libtool

在这里插入图片描述
再次执行autogen.sh文件
在这里插入图片描述

配置

接着配置,在libmodbus文件夹里新建一个install文件夹用来存放编译生成的相关文件

sudo mkdir install

执行配置

./configure --prefix=/home/xxx123/modbus/libmodbus/install
///home/xxx123/modbus/libmodbus/install为安装路径

在这里插入图片描述

编译

执行make&&make install命令

make&&make install
或
make
make install

报错

在这里插入图片描述
搜了一圈没找到解决办法,直觉地去找前面命令的执行情况,发现在执行下面这条命令时因为没加sudo

./configure --prefix=/home/xxx123/modbus/libmodbus/install

导致最后有部分工作没有完成
在这里插入图片描述
重新加sudo执行后可以看到执行完应该为下图这样
在这里插入图片描述

再执行make&&make install命令完成编译过程

也要加sudo
在这里插入图片描述
但是即使加了sudo最后也会报错
在这里插入图片描述
很明显这是因为sudo只对make命令产生了作用,解决办法为分开命令执行,也可以像野火执行echo命令屏蔽串口打印信息那样(见野火Linux教程)给整个命令加引号(本人没试过自行尝试),执行成功后如下
在这里插入图片描述
编译成功后,在刚刚创建的install文件夹下,会输出include头文件以及lib库文件
在这里插入图片描述
将lib下的3个动态库libmodbus.so.x.x,项目所在环境的/usr/lib目录

sudo cp -r ./install/lib/libmodbus.so* /usr/lib

在这里插入图片描述

若出现错误:-bash: make: command not found

在这里插入图片描述
原因分析:一般出现这个-bash: make: command not found提示,是因为安装系统的时候使用的是最小化mini安装,系统没有安装make、vim等常用命令,直接sudo apt-get install安装下即可。解决方法

sudo apt-get update(非必须)
sudo apt-get install  gcc automake autoconf libtool make

在这里插入图片描述
接下来可以执行sudo make命令了

若sudo make命令后报错:/bin/bash: …/libtool: No such file or directory

在这里插入图片描述
解决办法,重新执行

sudo apt install autoconf automake libtool
sudo ./autogen.sh

需要出现下图
在这里插入图片描述
此时再执行sudo make即可

若编译完成后在install文件夹下没有发现include头文件以及lib库文件

尝试重启系统或重新登录系统,我这里重新登录野火imx6ull开发板,重新登录后发现已经有了
在这里插入图片描述

使用

将 /modbus/libmodbus/install/include/ 文件夹下的头文件都拷贝到 /modbus/ 文件夹下(与应用程序同级目录)

//进入到/modbus/目录下执行
sudo cp ./libmodbus/install/include/modbus/modbus* ./

在这里插入图片描述
在项目makefile文件中 -L./lib -lmodbus 在调用函数的c文件中引入.h文件

gcc -o xxx xxx.c -L. -lmodbus
如:sudo gcc -o tcpslave tcpslave.c -L. -lmodbus

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/soinlove36/article/details/125834220