当前位置:   article > 正文

linux创建栈命令,libmodbus协议栈1——Linux下详细移植步骤(配置、生成)

libmodbus.la

libmodbus是一个免费的modbus协议栈,这个协议栈是跨平台的,也就是说既可以在Windows下以.dll库的提供方式,也可以在Unix/Linux下以.a/.so库的形式提供。一般在小型嵌入式硬件中,如果是非Linux系统或裸机,我们要实现设备modbus通信,要么使用freemodbus,要么是自己来写协议栈,这个工作量相对来讲还是比较多的,虽然现在freemodbus目前已经支持了在Linux下使用,不过还是仅限于 从机,而且其实现上相对来讲还是要将 freemodbus的整体代码融入到 工程项目中,这相对来讲就稍微麻烦。

libmodbus可以以库的形式提供整个modbus 的全部功能,尤其应用于 主机 通信,毕竟在linux环境下,只支持从机还是有点大材小用了,我们在编写应用程序时,只需要调用 libmodbus库的API函数,就可以完成modbus的主、从通信应用开发。

关于libmodbus的详细介绍,推荐两个网址:

官方手册: libmodbus官网手册

网友翻译: libmodbus翻译  ,这里,为这个做翻译工作的哥们儿点赞。

接下来我们来进行Linux环境下 libmodbus 库文件生成配置过程,我的linux版本是ubuntu16,libmodbus版本是 3.1.4

配置过程,其实在libmodbus的 README.md中介绍的很详细,我这里只是翻译后,精简到的具体实施步骤,具体如下:

特别说明:尽量使用git获取最新版3.1.4,使用git获取的文件中,有autogen.sh,使用交叉编译环境arm-linux-gnueabihf-gcc能够编译成功。而采用普通下载模式获取的最新版本3.1.4,没有autogen.sh,而是直接有configure(由autogen.sh生成),编译失败。而稳定版3.0.6可以通过普通下载,然后编译成功。

0.下载libmodbus源码

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

1. 确保ubuntu中已经有了 gcc的交叉编译环境,我这里使用的是  arm-fsl-linux-gnueabi-gcc

2. 安装 automake, autoconf, libtool

这3个东西,是3个工具,3个自动化生成工具,一般人用Makefile来编译程序,牛人 可以使用automake和autoconf自动生成

符合自由软件惯例的Makefile,只需要使用"./configure","make","make install" 可以自动生成Makefile,然后执行了。

libtool 是一个通用库支持脚本,用于生成库,这也是 libmodbus最终要提供 库 文件的工具。

安装命令:   sudo apt-get insatll automake autoconf libtool

3. 执行   ./autogen.sh

从名字上就可以看出,这是一个 自动生成 configure 文件的 脚本。

4. 在主机中创建一个 文件夹 install,用于存放将要生成的库文件,记住这个文件夹的绝对路径。这里我 把这个文件夹

与libmodbus文件夹 平级 创建。

命令: mkdir install

5. 上一步执行后,该目录下就生成了 configure 文件,我们可以通过 ./configure -h 查看该文件的帮助文档,

我们用到的配置参数 如下:

--host           //交叉编译环境类型

--prefix            //编译生成的库文件 存放位置,如果不配置,默认会将库文件存储到  /usr/local中

命令:  ./configure --host=arm-fsl-linux-gnueabi --prefix=/opt/git-proj/libmodbus/install/

这条命令,就是实现libmodbus的配置,交叉编译环境是 arm-fsl-linux-gnueabi,也就是生成的库是用在arm

平台上,生成的库文件 存放在 /opt/git-proj/libmodbus/install/ 文件夹中,也就是步骤4中创建的文件夹。

注意: --prefix= 需要使用 绝对路径。

6. 步骤5成功后,就会在当前目录下生成 Makefile 文件,接下来就是最后一步:

命令:make install

这里,有些人会习惯性执行  make && make install,也就是分两步运行,不过README.md中是没有这么说的,

之前的版本需要,最新版libmodbus-3.1.4只需要 make install就可以了。

7. 步骤6成功后,就会在步骤4创建的install文件夹下,生成3个目录:

include            lib         share

对我们有用的就是 include 和 lib目录,

include目录下的内容是 modbus/modbus.h、modbus-rtu.h、modbus-tcp.h、modbus-version.h

lib目录下的内容是 libmodbus.la、libmodbus.so、libmodbus.so.5、libmodbus.so.5.1.0

从上面的结构内容可知,include 是库文件的 头文件,lib是libmodbus生成的库文件,.so 就是linux典型的 动态库后缀。

8、 我们在使用 libmodbus库进行开发应用程序时,在应用程序的编译中,需要包含 步骤7 中的 include 和 lib,这两个目录放哪里不重要,重要的是,我们的编译 选项中要通过 -L、-l(小写l)、-I来包含引用。同时,我们还需要将 步骤7中说道的 lib 中的库文件,放到 我们的设备上,一般是放到/usr/lib中的,因为设备在运行libmodbus应用程序时,需要动态的调用 libmodbus的动态库。

至此就完成了libmodbus的配置生成工作,后面我们再介绍如何基于libmodbus库,开发modbus 主、从通信程序。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/566113
推荐阅读
相关标签
  

闽ICP备14008679号