MinGW GCC Windows下编译libmodbus

最近项目从MSVC切换到GCC,libmodbus官网没提供MinGW下GCC 如何编译,官网推荐在类UNIX环境下MSYS下编译,个人更偏向直接拿源文件编译。

编译libmodbus版本: libmodbus-3.1.10

GCC编译器版本: 5.3.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project)

CMake版本: 3.29.0

在随笔最下边提供已编译好的库文件.

1. 从Github下载3.1.10版本: https://github.com/stephane/libmodbus/tree/v3.1.10

 2. 下载完成后,解压,并创建Build目录,方便用CMake进行编译。

在Build下建立libmodbus目录,存放libmodbus源代码:

 

 3.  进入libmodbus-3.1.10\libmodbus-3.1.10\src\win32下:

执行configure.js,主要用来生成针对windows的modbus-version.h、config.h文件,在编译时会用到

 

 

 

4. 进入src下,将这些文件复制到Build\libmodbus下:

注意: modbus-version.h 头文件只有执行win32下的configure.js才会生成!

 在将win32下的config.h文件复制到build/libmodbus下,最后build/libmodbus目录,libmodbus编译所需要的所有源文件非常精简:

5. 现在直接编译会报错: undefined reference to `inet_pton‘,需要打开modbus-tcp.c,在

#if defined(_WIN32)

 上添加:

#define _WIN32_WINNT 0x0600

 6. 在Build下创建CMakeLists.txt文件

 7. 配置好MinGW环境

将MinGW\bin下的路径添加到环境变量,保证打开cmd,gcc、g++、mingw32-make可以正常执行。

在Build下打开cmd执行:

cmake -G"MinGW Makefiles" .

 执行mingw32-make:

 

 8.Build路径下得到库文件

 9. 创建include,将libmodbus下的所有头文件(.h)复制到include中:

 

 最后已把编译好的库文件放到了蓝奏云中,因为GCC编译器各种版本,如果有时间推荐自行编译。编译很简单。

https://wwp.lanzoue.com/iLgNd23o6erc
密码:2jwb

 

参考: https://blog.csdn.net/m0_48388579/article/details/132554634   QT使用部分

参考: https://blog.51cto.com/u_15950551/7407812   undefined reference to `inet_pton报错问题

 

posted @ 2024-07-06 15:01  耿明岩  阅读(251)  评论(0编辑  收藏  举报
希望能帮助到你,顺利解决问题! ...G(^_−)☆