在Windows上使用MinGW-w64编译ICU的问题
问题描述:
我试图根据Qt手册(MinGW-64-bit)使用MinGW-w64编译ICU 59.1。不幸的是,我得到了以下错误:在Windows上使用MinGW-w64编译ICU的问题
$ make && make install
rebuilding config/icucross.mk
rebuilding config/icucross.inc
cd ./config; \
make -f pkgdataMakefile
make[1]: вход в каталог «/c/Qt-deps/icu-59_1/source/config»
*** ERROR - configure could not detect your platform
*** see the readme.html
*** or, try copying icu/source/config/mh-linux to mh-unknown
*** and editing it.
exit 1
rm -rf pkgdata.inc
make[1]: выход из каталога «/c/Qt-deps/icu-59_1/source/config»
rm -rf config/icu-config
/usr/bin/install -c ./config/icu-config-top config/icu-config
chmod u+w config/icu-config
LC_ALL=C /usr/bin/sed -f ./config/make2sh.sed < ./config/Makefile.inc | grep -v '#M#' | uniq >> config/icu-config
LC_ALL=C /usr/bin/sed -f ./config/make2sh.sed < ./config/mh-unknown | grep -v '#M#' | uniq >> config/icu-config
cat ./config/icu-config-bottom >> config/icu-config
chmod u-w config/icu-config
config/icu-uc.pc updated.
config/icu-i18n.pc updated.
config/icu-io.pc updated.
Note: rebuild with "make VERBOSE=1 " to show all compiler parameters.
/bin/sh ./mkinstalldirs lib
mkdir lib
/bin/sh ./mkinstalldirs bin
mkdir bin
make[0]: Making `all' in `stubdata'
make[1]: вход в каталог «/c/Qt-deps/icu-59_1/source/stubdata»
*** ERROR - configure could not detect your platform
*** see the readme.html
*** or, try copying icu/source/config/mh-linux to mh-unknown
*** and editing it.
exit 1
make[1]: выход из каталога «/c/Qt-deps/icu-59_1/source/stubdata»
make: *** [Makefile:147: all-recursive] Ошибка 2
我试图编译它两次在两个不同的计算机:第一个1 - 10的Windows临,最后一个 - Windows 7旗舰版。结果是一样的。使用的工具:MSYS2 x64(20161025)。那么,我做错了什么?
答
错误“配置无法检测到您的平台”可能可以通过将参数--build=$MINGW_CHOST --host=$MINGW_CHOST
传递给配置脚本来解决。如果你是在正确的类型MSYS2外壳,$MINGW_CHOST
应i686-w64-mingw32
或x86_64-w64-mingw32
对于建设ICU更多有用的技巧,看看构建脚本的MSYS2开发人员制作:
https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-icu
有已经是MSYS2的[mingw-w64 ICU包](https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-icu)。 MSYS2的维护人员已经花时间调整构建脚本并添加了修补程序以使其工作。是否有任何理由让你自己编译而不是仅仅安装二进制MSYS2包? –
@DavidGrayson是的,我必须这样做,因为我需要ICU编译Qt – Eugene
这没有多大意义。你可以禁用Qt与'-no-icu'(我在[nixcrpkgs](https://github.com/DavidEGrayson/nixcrpkgs)中自己完成的)ICU依赖项。如果你真的想要一个依赖于ICU的Qt版本,你可以使用MSYS2 ICU软件包来编译你自己的Qt。或者你可以使用Qt的MSYS2软件包,而不是编译任何东西。无论如何,如果你确实知道你需要从源代码编译ICU,你应该使用我链接的PKGBUILD脚本作为起点;它可以用'makepkg-mingw'构建。 –