关于asio2在各个操作系统平台下编译时的openssl等链接库的说明

关于asio2在各个操作系统平台下编译时的openssl等链接库的说明

asio2框架目前在visual studio 2017以上版本, clion, qt creator这几个IDE下均可正常编译使用,在msvc gcc clang ndk mingw这几个编译器也均可以正常编译。

在有的操作系统下编译时需要额外链接系统网络库文件,如果使用了openssl还要链接openssl的库文件。

具体在哪个平台要链接哪个库,可以参考 /asio2/example/CMakeLists.txt 这个文件里面的GENERAL_LIBS和OPENSSL_LIBS这两个变量的内容。

windows:

必须要链接操作系统的网络库文件,共有两个文件:
ws2_32.lib
mswsock.lib

使用openssl则需要链接:
libssl.lib
libcrypto.lib
Crypt32.lib

在qt工程的.pro文件中的写法是:
LIBS += -lws2_32
LIBS += -lmswsock

在/asio2/3rd/openssl中已经提供了编译好的openssl库,可以直接使用。

但是注意asio2目录里默认只提供了windows和linux平台下的编译好的openssl库,如果要在其它平台如macos 安卓等下编译时,则需要再下载对应平台下的openssl库。

这里介绍一个各个平台下的编译好的openssl库的地址:https://github.com/axmolengine/buildware

这个库的更新很及时,基本上有新版本出来了他都会更新,里面编译好的库有好几个,但asio2这里只用了他编译好的openssl库。由于他编译的windows平台下的openssl库是动态库,所以我又重新编译了一下windows下的openssl库,我编译的是静态库,也就是说asio2里面提供的 /asio2/3rd/openssl/prebuilt/windows这个目录下的openssl库是静态库(静态库方便一点)。

如果你要在其它平台下编译,直接下载该地址中的release包,然后将release压缩包中的openssl文件夹解压并覆盖替换/asio2/3rd/openssl文件夹即可,这样就可以在各个平台下编译使用asio2了。

另外还有一点要注意:如果使用的IDE是clion,也要用buildware上下载的openssl库替换一下asio2里自带的openssl库,否则编译会失败。失败的原因应该是asio2里自带的openssl库是我在msvc下编译的,而clion默认使用的编译器似乎是mingw,而mingw好像不兼容msvc编译的openssl库。

linux:

linux平台下没有要链接的操作系统网络库文件。

使用openssl则需要链接:
libssl.a
libcrypto.a

最后

基本上要链接的库文件也就这几个,如果你编译失败,用失败信息在网络上进行搜索也可以看出来是没有链接哪个库。

知道了要链接哪个库,然后各个不同的IDE下链接库文件的写法,在网络搜索也就知道了。

最后编辑于2023-04-06

你可能感兴趣的:(qt,网络,c++,asio,socket)