Как мне собрать UCRT с помощью mingw-w64?

Я хотел бы иметь возможность использовать mingw-w64 для создания двоичных файлов, которые ссылаются на универсальный CRT, доступный в Visual Studio 2015+ вместо MSVCRT.lib. Примечания к выпуску mingw-w64 v6.0.0 включают следующее: "Массовые дополнения для поддержки UCRT благодаря Martin Storsjö"

К сожалению, мои поиски не выявили документацию о том, как использовать эту поддержку.

Кто-нибудь знает, какие варианты мне нужно предоставить и где их поставить?

0 ответов

Что ж, я сделал это вместе с VS 2017. Но насколько я понимаю, и VS 2015, и VS 2017 используютVCRUNTIME140.DLL, так что здесь не о чем беспокоиться.

Он разделен на два этапа:

1. Создание библиотеки импорта для VCRUNTIME140.DLL:

Это делается следующим образом:

mkdir scratch; cd scratch
cp C:/Windows/System32/vcruntime140.dll .
dumpbin /exports vcruntime140.dll > exports.txt
echo LIBRARY VCRUNTIME140 > vcruntime140.def
echo EXPORTS >> vcruntime140.def
tail +20 exports.txt | head -n -10 | awk '{print $4}' >> vcruntime140.def
lib /def:vcruntime140.def /out:libvcruntime140.a /machine:x86
cp libvcruntime140.a $(MINGW_ROOT)/i686-w64-mingw32/lib

2. Измените способ работы MinGW GCC для связи сVCRUNTIME140 а также UCRT вместо того MSVCRT

gcc -dumpspecs > $(MINGW_ROOT)/lib/gcc/i686-w64-mingw32/$(GCC_VERSION)/specs
  1. Добавить -D_UCRT к cpp а также cc1plusразделы файла спецификаций. Это предотвратит ошибки связывания неопределенных ссылок дляscanfфункции семьи. Проверьте мой другой вопрос.
  2. Заменить -lmsvcrt к -lvcruntime140 -lucrt в libgcc раздел файла спецификаций.

Пожалуйста, обменяйте $(MINGW_ROOT)с местом, где у вас есть MinGW.

Примечания:

  • Часть подписи платформы, i686-w64-mingw32, указанные мной пути могут отличаться для вашего случая. Я считаю, основываясь на архитектуре. Поэтому вам, возможно, придется изменить это соответствующим образом.
  • Вам нужно использовать относительно новый MinGW сlibucrt.aв папке $(MINGW_ROOT)/i686-w64-mingw32/lib. Я использую MinGW 7.0.0 с GCC 7.4.0.
Другие вопросы по тегам