首先先看你的下载的qt用的是Mingw还是Msvc,我用的是Mingw的,这里只做Mingw的教程。
记住你的Mingw版本,比如我的是Qt (MinGW-W64 8.1.0),记住这个版本号,后续编译openssl和srt要用到相同版本的Mingw,不然集成进qt时会不兼容。
下载openssl源码:OpenSSL,https://www.openssl.org/注意不要下载预编译包,预编译包只支持Msvc,要下载压缩包,我下载的openssl1.1.1w.tar.gz,然后解压放到你的目录。
下载srt源码:
git clone https://github.com/Haivision/srt.git
通过git克隆,没有git先下载git,克隆过来后放到你的目录,最好跟openssl的目录一致。
下载MSYS2:MSYS2Software Distribution and Building Platform for Windowshttps://www.msys2.org/
MSYS2 自带 MinGW-W64 工具链(GCC、G++、Make 等),与 Qt 的 MinGW 版本完全兼容。
下载完后打开里面的mingw64.exe,不用输入命令下载MinGw工具链,因为下载的几乎都是新版本的,与qt的不兼容,直接配置临时环境变量
export PATH="/d/qt/Tools/mingw810_64/bin:$PATH"
其中的/d/qt/Tools/mingw810_64/bin换成你自己qt下的路径,配置完后再输入gcc --version,如果显示的版本和你qt的一样就可以进行后续编译了。
然后进入你的openssl-1.1.1w源码目录
cd /d/srt_project/source/openssl-1.1.1w
cd后面的路径换成你自己的路径
在这里先说一下我的目录结构,我是在d盘有一个srt_project文件夹,在其里面先创一个install文件夹,再创一个source文件夹,source里面就存放openssl1.1.1w和src的源码,后续写代码编译的时候看着我的目录改成你的目录再编译,或者直接用我的目录结构。
进入openssl-1.1.1w源码目录后,执行以下:
./Configure mingw64 shared \
--prefix=/d/srt_project/install/openssl \
--openssldir=/d/srt_project/install/openssl/ssl
可换成你自己的目录,执行后再输入:
mkdir -p /d/srt_project/install/openssl/ssl/certs
然后输入:make -j8 && make install
以上就是openssl配置和安装的过程,如果有什么报错或者确实什么工具,直接把报错放到ai上,看缺少什么就安装什么就好了。
然后进入你的srt源码目录
cd /d/srt_project/source/srt
再输入:
mkdir build && cd build
为避免冲突,临时移除 MSYS2 的系统 OpenSSL:
mv C:/msys64/mingw64/lib/pkgconfig/libcrypto.pc C:/msys64/mingw64/lib/pkgconfig/libcrypto.pc.bak
mv C:/msys64/mingw64/lib/pkgconfig/openssl.pc C:/msys64/mingw64/lib/pkgconfig/openssl.pc.bak
然后使用以下参数强制使用你编译的 OpenSSL 1.1.1w:
cmake -G "MinGW Makefiles" \
-DCMAKE_INSTALL_PREFIX=/d/srt_project/install/srt \
-DOPENSSL_ROOT_DIR=/d/srt_project/install/openssl \
-DOPENSSL_CRYPTO_LIBRARY=/d/srt_project/install/openssl/lib/libcrypto.dll.a \
-DOPENSSL_SSL_LIBRARY=/d/srt_project/install/openssl/lib/libssl.dll.a \
-DOPENSSL_INCLUDE_DIR=/d/srt_project/install/openssl/include \
-DCMAKE_C_COMPILER=/d/qt/Tools/mingw810_64/bin/gcc.exe \
-DCMAKE_CXX_COMPILER=/d/qt/Tools/mingw810_64/bin/g++.exe ..
然后看你qt目录下的make工具名称是什么,我的在 D:\qt\Tools\mingw810_64\bin
中,make
工具的名称是 mingw32-make.exe
然后根据make工具名称再输入:
mingw32-make -j8 && mingw32-make install
如果都编译且安装的话,D:\srt_project\install里面就会有openssl和srt的库和头文件了,接下来就把它们集成进qt。
在 Qt 项目的 .pro
文件中添加以下内容,指定头文件和库的路径:
# 添加头文件路径
INCLUDEPATH += D:/srt_project/install/openssl/include \
D:/srt_project/install/srt/include
# 添加库文件路径
LIBS += -LD:/srt_project/install/openssl/lib -lssl -lcrypto \
-LD:/srt_project/install/srt/lib -lsrt
最后一步:Qt 程序运行时需要动态链接 openssl和 srt 的 dll 文件,把D:\srt_project\install里面的openssl和srt的所有.dll文件复制到qt的debug和release目录下。
然后就可以再qt里运用它们啦。