编译libmodbus库及使用

1.下载源码

cd ~

git clone https://gitee.com/changser/libmodbus

2.设置编译环境:

打开“~/.bashrc"文件,在最后行添加,以便导入编译器常用的环境变量

export KERNELDIR=/home/dengxm2024/linuxProgDir/linuxkerneldir/linux-2.6.35.3
export CROSS_COMPILE=arm-fsl-linux-gnueabi-
export ARCH=arm
export PATH=/opt/arm-fsl-linux-gnueabi/bin:$PATH
export LD_LIBRARY_PATH=/opt/arm-fsl-linux-gnueabi/lib:$LD_LIBRARY_PATH
export CC=arm-fsl-linux-gnueabi-gcc
export CXX=arm-fsl-linux-gnueabi-g++
export AR=arm-fsl-linux-gnueabi-ar
export RANLIB=arm-fsl-linux-gnueabi-ranlib
export NM=arm-fsl-linux-gnueabi-nm
export LD=arm-fsl-linux-gnueabi-ld
export STRIP=arm-fsl-linux-gnueabi-strip

2.编译源码:

进入源码文件夹:

cd libmodbus

运行automake  autoconfgure脚本来生成Makefile文件:

./configure --host=arm-fsl-linux-gnueabi --enable-static --prefix=/home/dengxm2024/libmodbus_install/

--host=arm-fsl-linux-gnueabi   指定交叉编译器的前缀

--enable-static  静态编译

prefix=/home/dengxm2024/libmodbus_install/  指定库编译完成后的编译结果存放的路径

运行CMAKE编译命令:

make

安装生成的库:

make install

做完上述步骤可以看见在"~/libmodbus_install"生成了头文件及库文件

dengxm2024@PC-202105142413:~/libmodbus_install$ ls
include  lib  share

3.使用上面输出的库

新建文件/home/dengxm2024/linuxProgDir/imx280astudy/userside_code/libmodbustest/version.c

/*
 * Copyright © 2008-2014 Stéphane Raimbault <stephane.raimbault@gmail.com>
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include <stdio.h>
#include <modbus/modbus-version.h>
#include <modbus/modbus.h>

int main(void)
{
    printf("Compiled with libmodbus version %s (%06X)\n", LIBMODBUS_VERSION_STRING, LIBMODBUS_VERSION_HEX);
    printf("Linked with libmodbus version %d.%d.%d\n",
           LIBMODBUS_VERSION_MAJOR, LIBMODBUS_VERSION_MINOR, LIBMODBUS_VERSION_MICRO);

    if (LIBMODBUS_VERSION_CHECK(2, 1, 0)) {
        printf("The functions to read/write float values are available (2.1.0).\n");
    }

    if (LIBMODBUS_VERSION_CHECK(2, 1, 1)) {
        printf("Oh gosh, brand new API (2.1.1)!\n");
    }

    return 0;
}

.新建/home/dengxm2024/linuxProgDir/imx280astudy/userside_code/libmodbustest/Makefile

# 定义libmodbus库头文件的路径
HEADERS_DIR := /home/dengxm2024/linuxProgDir/imx280astudy/userside_code/libmodbustest/libmodbus_install/include

# 添加头文件路径到编译器的搜索路径中
CFLAGS += -I$(HEADERS_DIR)

EXEC = ./version 
OBJS = version.o
SRC  = version.c
# 指定编译器前缀
CC = $(CROSS_COMPILE)gcc

LDFLAGS += 

all:$(EXEC)

$(EXEC):$(OBJS)
	$(CC) $(LDFLAGS) -o $@ $(OBJS) -pthread

%.o:%.c
	$(CC) $(CFLAGS) -c $< -o $@ -pthread

clean:
	@rm -vf $(EXEC) *.o *~

把库文件夹~/libmodbus_install复制到项目文件夹

cp -r ~/libmodbus_install/ ~/linuxProgDir/imx280astudy/userside_code/libmodbustest

项目结构如下:

在终端窗口的项目文件夹中执行make

编译成功,生成version可执行文件。

4.测试运行

将执行文件复制到开发板当中测试运行。

复制version到web服务器

cp version /mnt/d/imx280a_exe_folder/

打开开发板终端窗口,从web服务器获取version文件

wget http://192.168.0.233:443/imx280a_exe_folder/version

给version添加可执行属性

chmod +x version

执行version查看结果

./version

root@EasyARM-iMX28x ~# ./version
Compiled with libmodbus version 3.1.4 (030104)
Linked with libmodbus version 3.1.4
The functions to read/write float values are available (2.1.0).
Oh gosh, brand new API (2.1.1)!

至此,使用libmodbus库进行开发的初步步骤就完成了。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值