用Mingw-w64交叉编译ICU和OpenSSL

hamster 2021-05-14 PM 62℃ 0条

Qt在Windows上依赖一些第三方库,包括ICUOpenSSL。为了方便,这里在Linux系统上使用Mingw-w64交叉编译出Windows平台的ICU和OpenSSL。文末提供了编译得到的ICU和OpenSSL的下载地址。

准备工作

设置环境变量

export BUILDDIR=$HOME/build

其中BUILDDIR表示安装目录。在工作目录下创建临时目录tmp

mkdir $BUILDDIR/tmp -p 

编译ICU

下载并解压

cd $BUILDDIR/tmp
wget  https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-src.tgz
tar -xf icu4c-69_1-src.tgz
cd icu

先进行本地编译

mkdir build-linux
cd build-linux
../source/configure 
make 

再为Windows进行交叉编译,其中安装路径为$BUILDDIR/icu

cd ..
mkdir build-win
cd build-win
../source/configure --prefix=$BUILDDIR/icu --host=x86_64-w64-mingw32 --with-cross-build=$BUILDDIR/tmp/icu/build-linux --enable-static --enable-shared --enable-tests=no --enable-samples=no 
make && make install

编译openssl

下载源代码并配置:

cd $BUILDDIR/tmp
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -xf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
mkdir build
cd build
../Configure mingw64 --prefix=$BUILDDIR/openssl no-asm

Makefile中把选项CROSS_COMPILE=修改为CROSS_COMPILE=x86_64-w64-mingw32-

sed -i 's/CROSS_COMPILE=/CROSS_COMPILE=x86_64-w64-mingw32-/g' Makefile

开始编译

make && make install

打包发布

首先清理临时文件

cd $BUILDDIR
rm -rf  tmp

用7-Zip打包ICU和OpenSSL

7z a openssl-1.1.1k-win64.7z openssl
7z a icu4c-69_1-win64.7z  icu

编译得到的ICU和OpenSSL的下载链接

ICU 69.1 for Windows 64 bit
File name: icu4c-69_1-win64.7z
MD5: 40ce655cf92394b9a783311dee2284f2
Size: 21M
OpenSSL 1.1.1k for Windows 64 bit
File name: openssl-1.1.1k-win64.7z
MD5: b5e78b96c50e938394722237c9b95132
Size: 3.5M
标签: Mingw-w64, OpenSSL, ICU

非特殊说明,本博所有文章均为博主原创。

评论啦~