【问题标题】:Problems with compilation ICU with MinGW-w64 on Windows在 Windows 上使用 MinGW-w64 编译 ICU 的问题
【发布时间】:2018-01-03 17:46:31
【问题描述】:

我尝试根据 Qt 手册 (MinGW-64-bit) 使用 MinGW-w64 编译 ICU 59.1。不幸的是,我收到以下错误:

$ 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

我尝试在两台不同的计算机上编译两次:第一台 - Windows 10 Pro,最后一台 - Windows 7 Ultimate。结果是一样的。使用的工具:MSYS2 x64 (20161025)。那么,我做错了什么?

【问题讨论】:

  • MSYS2 已经有一个mingw-w64 ICU package。 MSYS2 的维护者花时间调整构建脚本并添加补丁以使其工作。你有什么理由自己编译而不是安装二进制 MSYS2 包?
  • @DavidGrayson 是的,我必须这样做,因为我需要 ICU 来编译 Qt
  • 这没有多大意义。您可以使用 -no-icu 禁用 Qt 的 ICU 依赖项(我自己在 nixcrpkgs 中完成了该操作)。如果你真的想要一个依赖于 ICU 的 Qt 版本,你可以使用 MSYS2 ICU 包来编译你自己的 Qt。或者你可以只使用 Qt 的 MSYS2 包而不编译任何东西。无论如何,如果你真的知道你需要从源代码编译 ICU,你可能应该使用我链接到的 PKGBUILD 脚本作为起点;它可以用makepkg-mingw构建。

标签: windows mingw icu msys2


【解决方案1】:

可以通过将参数--build=$MINGW_CHOST --host=$MINGW_CHOST 传递给配置脚本来修复错误“配置无法检测到您的平台”。如果您使用正确类型的 MSYS2 shell,$MINGW_CHOST 应该是 i686-w64-mingw32x86_64-w64-mingw32

有关构建 ICU 的更多有用提示,请查看 MSYS2 开发人员制作的构建脚本:

https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-icu

【讨论】:

    【解决方案2】:

    我已经修复了同样的问题(除了使用 ICU 55.1)用 ../source/config/mh- 的内容替换 ../source/config/mh-unknown mingw64

    【讨论】:

      【解决方案3】:

      我已经建立了同样问题的 icu。 我已经运行了这个脚本来纠正这个问题:

      del M:\work\code\qt\icu4c-68_2\icu4c\source\config\mh-unknow
      copy M:\work\code\qt\icu4c-68_2\icu4c\source\config\mh-msys-msvc M:\work\code\qt\icu4c-68_2\icu4c\source\config\mh-unknow
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多