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报错问题