Windows系统下编译libnanomsg库
开发中经常需要有数据交互类的功能需求,一般会使用TCP或UDP方式,需要自己去实现Server或Client端的功能。如果有多个进程或服务应用之间的数据交互,就需要对Server端更多的设计方式来满足多客户端的请求访问。
nanomsg就是提供通讯服务的开发库,使用C语言开发,可以方便的移植到各种平台,支持多种通讯方式。不像ZeroMQ需要常驻的服务,可以直接集成在应用中使用。以下是官方的介绍
The nanomsg library is a simple high-performance implementation of several “scalability protocols”. These scalability protocols are light-weight messaging protocols which can be used to solve a number of very common messaging patterns, such as request/reply, publish/subscribe, surveyor/respondent, and so forth. These protocols can run over a variety of transports such as TCP, UNIX sockets, and even WebSocket.
https://github.com/nanomsg/nanomsg
本文是将nanomsg在Windows平台下编译成dll动态库来使用。
下载nanomsg代码并解压到目录。
下载cmake安装包。
https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-windows-x86_64.msi
下载mingw64并解压到目录,然后配置mingw64的路径到环境变量PATH中。
运行PowerShell,并切换目录到nanomsg下
mkdir build
cd build
然后使用cmake来生成Makefile文件,这里指定使用”MinGW”方式。
cmake -G "MinGW Makefiles" ..
然后使用ming32-make.exe来编译代码
ming32-make.exe
等待编译完成后,就能看到有libnanomsg.dll文件了。
MinGW的共享库和静态库的区别
共享库 类似 msvc 的静态链接,构建最终生成 .a(类似.lib) 和 .dll,客户端编译时需要头文件和 .a,运行时需要 .dll;
静态链接库 则是另外一种新的机制,构建最终只生成 .a 文件,客户端调用时需要 .a 文件,运行时则不需要任何库文件,类似于客户端在编译时将库包进了自己的exe中;
MSVC编译器在构建动态库时生成的文件是*.dll和*.lib。