当前位置:   article > 正文

linux 编译mqtt静态库_编译MQTT C++ Client

linux 上编译mqtt,cpp

nmake  -f  ms\nt.mak(这是静态库,动态库是ntdll.mak)

nmake  -f  ms\nt.mak test(测试命令,如果成功则最后显示“passed all tests”字样)

nmake  -f  ms\nt.mak install 成功则会在C:\openss\win64目录下生成bin、include、lib、ssl四个文件夹

如果需要编译动态库,nmake  -f  ms\nt.mak改成动态库版本就可以了。

清除上次OpenSSL动态库的编译,以便重新编译:nmake -f ms\ntdll.mak clean 清除上次OpenSSL静态库的编译,以便重新编译:nmake -f ms\nt.mak clean

备注:利用openssl生成RSA公私密钥对。

在Windows环境下,打开OPENSSL安装目录bin文件下面的openssl.exe。

生成RSA私钥:genrsa -out rsa_private_key.pem 1024

该命令会生成1024位的私钥

生成RSA公钥:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem此时,我们可以看到一个文件名为rsa_public_key.pem的文件,打开它,

可以看到-----BEGIN PUBLIC KEY-----开头,-----END PUBLIC KEY-----结尾的没有换行的字符串,这个就是公钥

把RSA私钥转换成PKCS8格式:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt

生成的结果就是PKCS8格式的私钥

4、安装cppunit(cpp单元测试件)下载地址:http://downloads.sourceforge.net/cppunit/cppunit-1.12.1.tar.gz,如果不需要测试可以省略这一步。一般我们编译cppunit_dll工程,同时产生lib和dll文件

里面有vc6的工程文件,用vs2017打开,升级工程后,编译容易出现MSB3073的错误,编译完成后,copy的时候提示找不到文件。需要做如下修改

(1)General\TargetName中,$(ProjectName)-->$(ProjectName)d,而cppunit_dll工程比较特殊,它需要在cppunitd_dll中间加"d",没办法使用$(ProjectName),可直接写为cppunitd_dll

(2)Linker\General\Output Files中,DebugDll\cppunit_dll.dll-->DebugDll\$(TargetName)$(TargetExt)

(3)Linker\Advanced\Import Libraries中,.\DebugDll\cppunit_dll.lib-->.\DebugDll\$(TargetName).lib

(4)PostBuild Event\Command Line中:改为:

copy "$(TargetPath)" ..\..\lib\$(TargetName)$(TargetExt)

copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib5、官网c++Mqtt Client 地址https://github.com/eclipse/paho.mqtt.cpp

使用git下载git clone https://github.com/eclipse/paho.mqtt.cpp,进入刚刚下载的paho.mqtt.cpp文件中,将mqtt的c的源码包下载下来git clone https://github.com/eclipse/paho.mqtt.c.git

新版的mqtt文件夹里没有sln文件,用cmake-gui生成sln文件,而后用vs2017打开编译,openssl路径;或者执行paho.mqtt.c文件夹下的cbuild批处理文件(git下来的是vs2015配置,vs2017则是

"D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat",具体的路径请根据自己安装配置),这里如果是批处理的话openssl的安装目录必须是c:\OpenSSL-Win64;

cmake-gui,Configure选用Visual Studio 15 2017 Win64,Generate后,可以选定OPENSSL_LIB OPENSSL_INCLUDE_DIR OEPENSSLCRYPTO_LIB的路径。

使用cmake-gui,产生sln文件,在一次General之后可以选定PAHO_MQTT_C_LIB和PAHO_MQTT_C_PAHT和openssl相关路径。然后打开工程编译就可以。

如果不行产生ZERO_CHECK,在CMakelist文件中加入SET(CMAKE_SUPPRESS_REGENERATION 1)

原来的CMakeLists文件比较庞杂,这是精简后的phot.mqtt.c/src/CMakeList   phot.mqtt.c下的CMakeList:phot.mqtt.c/CMakeLists(下载完成后修改成文件名为CMakeList),去除了ZERO_CHECK、INSTALL、  PACKAGE三个工程文件。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号