windows7下编译mosquitto

准备工作

mosquitto

mosquitto源码下载地址,目前使用的是最新版本2.0.14。

window

windows系统为win7 sp1版本,其他版本应该也也可以。

Visual Studio

VS版本为2010,其他版本类似。

cmake

用于为mosquitto配成、生成vs下的工程,cmake的下载地址,这里使用的是3.22.1版本。

cmake的安装比较简单,安装提示安装即可。

pthreads-ws32

mosquitto用到了POSIX下的pthreads线程库,windows原生是不支持POSIX pthreads的,这里需要安装windows下的pthreads开发库,这里是下载地址,选在最新版本的即可。

openssl

mosquitto用到了openssl中的加解密和TLS相关的功能,这里需要安装windows版本的openssl开发库,这里是windows openssl开发库的下载地址,注意选择,开发版本下载、安装。
windows7下编译mosquitto

cJSON

mosquitto中也用到了cJSON,cJSON下载地址

编译步骤

安装pthread ws32

解压pthreads-w32-2-9-1-release.zip,会出现三个文件夹,这里需要注意的是Pre-build.2这个文件夹,这里面包括pthread相关的动态库、静态库、头文件等开发相关的内容。

  1. 将Pre-build.2下的incldue拷贝到visual studio 2010的安装目录下VC/include下,我这里是: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include。
  2. 将Pre-build.2下的lib下x86或x64目录下的静态库拷贝到VC/lib下,具体拷贝x86还是x64,需要根据是编译32位应用和64位应用,这里编译的mosquitto是32位的,所以这里拷贝的是x86下的静态库,拷贝目录是:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib

安装openssl

这里直接安装下载的openssl安装文件Win64OpenSSL-3_0_1.exe,默认安装位置是:C:\Program Files\OpenSSL-Win32,安装完成之后,可以看到openssl的头文件和库文件。
windows7下编译mosquitto

安装cJSON

cJSON的编译相对来说,较为简单,步骤如下

  1. 配置cmake环境。
    windows7下编译mosquitto
    由于cJSON比较简单,所以,Configure、Generate步骤没有问题。

  2. 打开,VS2010,进行编译。

  3. 新建目cJSON,并创建lib和include两个目录,将编译成功后的库文件和.h文件分别放到lib和include目录。

编译mosquitto

准备

准备mosquitto的cmake编译环境。
windows7下编译mosquitto

  1. 将mosquitto-2.0.14解压,注意,解压缩的位置不要包含中文字符,否则,cmake会找不到mosquitto源码路径。

  2. 配置mosquitto vs工程配置文件路径,注意,路径也不要包含中文字符

配置

windows7下编译mosquitto

  1. 点击“Configure”,选择“Visual Studio 10 2010”.

  2. 配置中断,提示“找不到OPENSSL库”,提示需要配置“”OPENSSL_ROOT_DIR环境变量。
    windows7下编译mosquitto
    在上一步,我们已经安装了openssl,这里只需要配置一下环境变量即可。
    windows7下编译mosquitto
    注意,OPENSSL_ROOT_DIR环境变量的value是openssl安装路径,即:C:\Program Files\OpenSSL-Win64。保存配置,点击“Configure”继续配置。

  3. 配置中断提示未找到cJSON库,新建环境变量:CJSON_INCLUDE_DIR和CJSON_LIB_DIR,指定上一节的cJSON的安装目录,保存配置,点击“Configure”继续配置。

4.不出意外,配置成功。

5.点击,“Generate”生成VS2010工程。
windows7下编译mosquitto

编译

  1. 打开mosquitto工程,开始编译。windows7下编译mosquitto
    注意,这里只编译libmosquitto这个工程。
    windows7下编译mosquitto

  2. 编译时提示,找不到stdbool.h文件,这是由于VS2010编译环境,没有这个文件,下面是从VS2015中得到的stdbool.h文件。

//
// stdbool.h
//
//      Copyright (c) Microsoft Corporation. All rights reserved.
//
// The C Standard Library <stdbool.h> header.
//
#ifndef _STDBOOL
#define _STDBOOL

#define __bool_true_false_are_defined   1

#ifndef __cplusplus

#if __STDC_VERSION__ < 199901
typedef int _Bool;
#endif

#define bool    _Bool
#define false   0
#define true    1

#endif /* __cplusplus */

#endif /* _STDBOOL */

/*
 * Copyright (c) 1992-2010 by P.J. Plauger.  ALL RIGHTS RESERVED.
 * Consult your license regarding permissions and restrictions.
V5.30:0009 */

将其放到VC/include目录下即可。注意,如果只编译,libmosquitto这个工程的话,不需要stdbool.h这个文件。

  1. 继续编译,不出意外,编译成功,会在工程的Release文件夹下生成lib和dll文件。
    windows7下编译mosquitto
上一篇:OpenSSL命令—pkcs12


下一篇:第五章作业---1.6