WxWidgets — ошибка сборки с dll mingw32-exe, mingw64

Я пытаюсь собрать WxWidgets 3.2.4 с MinGW64 g++ из строки cmd. После загрузки исходного кода я следовал инструкциям по сборке ("...\docs\mswinstall.md"), в которых говорится:

### Using makefiles from Windows command line

The `makefile.gcc` makefiles are for compilation using MinGW using Windows
command interpreter (`cmd.exe`), they will *not* work if you use Unix
shell, as is the case with MSYS. Follow the instructions for using configure
above instead if you prefer to use Unix shell. The commands shown here must be
executed from a DOS command line window (cmd.exe, *not* Bash sh.exe).

1. Change directory to `%%WXWIN%\build\msw` and type

        > mingw32-make -f makefile.gcc

   to build wxWidgets in the default debug configuration as a static
   library. Add "BUILD=release" and/or "SHARED=1" to build the library
   in release configuration and/or as a shared library instead of the
   default static one, see [Make Parameters](#msw_build_make_params)
   for more details.

Я получаю довольно длинный вывод (о котором сообщается позже в сообщении) в строке cmd, который заканчивается:

если существует ..\..\lib\gcc_dll\libwxregexu.a del ..\..\lib\gcc_dll\libwxregexu.a

ar rcu ..\..\lib\gcc_dll\libwxregexu.a @..\..\lib\gcc_dll\libwxregexu.a.rsp

ar: файл "@../../lib/gcc_dll/libwxregexu.a.rsp": система не может найти указанный путь.

mingw32-make: *** [makefile.gcc:5364: ..\..\lib\gcc_dll\libwxregexu.a] Ошибка 1

Команда сборки, которую я выполнил:

C:\SwDev\WxWidgets\v_3.2.4\build\msw>%MINGW64_v13_2_0_r1%\mingw32-make -f makefile.gcc BUILD=release SHARED=1

где переменная среды MINGW64_v13_2_0_r1 указывает на папку MinGW64 ("C:\SwDev\MinGW_w64\Ver_13.2.0_Rev_1\mingw64\bin").

В «makefile.gcc» строка, сообщающая об ошибке (строка 5364), выглядит следующим образом:

5360 $(LIBDIRNAME)\libwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).a: $(WXREGEX_OBJECTS)
5361    $(foreach f,$(subst \,/,$(WXREGEX_OBJECTS)),$(shell echo $f >> $(subst \,/,$@).rsp.tmp))
5362    @move /y [email protected] [email protected] >nul
5363    if exist $@ del $@
5364    ar rcu $@ @[email protected]
5365    @-del [email protected]
5366    ranlib $@

Полное сообщение сборки:

C:\SwDev\WxWidgets\v_3.2.4\build\msw>%MINGW64_v13_2_0_r1%\mingw32-make -f makefile.gcc BUILD=release SHARED=1
if not exist gcc_mswudll mkdir gcc_mswudll
if not exist ..\..\lib\gcc_dll mkdir ..\..\lib\gcc_dll
if not exist ..\..\lib\gcc_dll\mswu mkdir ..\..\lib\gcc_dll\mswu
if not exist ..\..\lib\gcc_dll\mswu\wx mkdir ..\..\lib\gcc_dll\mswu\wx
if not exist ..\..\lib\gcc_dll\mswu\wx\setup.h copy ..\..\include\wx\msw\setup.h ..\..\lib\gcc_dll\mswu\wx\setup.h
        1 file(s) copied.
if not exist ..\..\lib\gcc_dll\mswu\wx\msw mkdir ..\..\lib\gcc_dll\mswu\wx\msw
gcc -E  "..\..\include\wx\msw\genrcdefs.h" > "..\..\lib\gcc_dll\mswu\wx\msw\rcdefs.h"
gcc -c -o gcc_mswudll\wxregex_pcre2_auto_possess.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_auto_possess.o -MFgcc_mswudll\wxregex_pcre2_auto_possess.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_auto_possess.c
gcc -c -o gcc_mswudll\wxregex_pcre2_compile.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_compile.o -MFgcc_mswudll\wxregex_pcre2_compile.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_compile.c
gcc -c -o gcc_mswudll\wxregex_pcre2_config.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_config.o -MFgcc_mswudll\wxregex_pcre2_config.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_config.c
gcc -c -o gcc_mswudll\wxregex_pcre2_context.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_context.o -MFgcc_mswudll\wxregex_pcre2_context.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_context.c
gcc -c -o gcc_mswudll\wxregex_pcre2_convert.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_convert.o -MFgcc_mswudll\wxregex_pcre2_convert.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_convert.c
gcc -c -o gcc_mswudll\wxregex_pcre2_dfa_match.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_dfa_match.o -MFgcc_mswudll\wxregex_pcre2_dfa_match.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_dfa_match.c
gcc -c -o gcc_mswudll\wxregex_pcre2_error.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_error.o -MFgcc_mswudll\wxregex_pcre2_error.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_error.c
gcc -c -o gcc_mswudll\wxregex_pcre2_extuni.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_extuni.o -MFgcc_mswudll\wxregex_pcre2_extuni.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_extuni.c
gcc -c -o gcc_mswudll\wxregex_pcre2_find_bracket.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_find_bracket.o -MFgcc_mswudll\wxregex_pcre2_find_bracket.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_find_bracket.c
gcc -c -o gcc_mswudll\wxregex_pcre2_jit_compile.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_jit_compile.o -MFgcc_mswudll\wxregex_pcre2_jit_compile.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_jit_compile.c
gcc -c -o gcc_mswudll\wxregex_pcre2_maketables.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_maketables.o -MFgcc_mswudll\wxregex_pcre2_maketables.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_maketables.c
gcc -c -o gcc_mswudll\wxregex_pcre2_match.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_match.o -MFgcc_mswudll\wxregex_pcre2_match.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_match.c
gcc -c -o gcc_mswudll\wxregex_pcre2_match_data.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_match_data.o -MFgcc_mswudll\wxregex_pcre2_match_data.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_match_data.c
gcc -c -o gcc_mswudll\wxregex_pcre2_newline.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_newline.o -MFgcc_mswudll\wxregex_pcre2_newline.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_newline.c
gcc -c -o gcc_mswudll\wxregex_pcre2_ord2utf.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_ord2utf.o -MFgcc_mswudll\wxregex_pcre2_ord2utf.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_ord2utf.c
gcc -c -o gcc_mswudll\wxregex_pcre2_pattern_info.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_pattern_info.o -MFgcc_mswudll\wxregex_pcre2_pattern_info.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_pattern_info.c
gcc -c -o gcc_mswudll\wxregex_pcre2_script_run.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_script_run.o -MFgcc_mswudll\wxregex_pcre2_script_run.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_script_run.c
gcc -c -o gcc_mswudll\wxregex_pcre2_serialize.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_serialize.o -MFgcc_mswudll\wxregex_pcre2_serialize.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_serialize.c
gcc -c -o gcc_mswudll\wxregex_pcre2_string_utils.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_string_utils.o -MFgcc_mswudll\wxregex_pcre2_string_utils.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_string_utils.c
gcc -c -o gcc_mswudll\wxregex_pcre2_study.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_study.o -MFgcc_mswudll\wxregex_pcre2_study.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_study.c
gcc -c -o gcc_mswudll\wxregex_pcre2_substitute.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_substitute.o -MFgcc_mswudll\wxregex_pcre2_substitute.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_substitute.c
gcc -c -o gcc_mswudll\wxregex_pcre2_substring.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_substring.o -MFgcc_mswudll\wxregex_pcre2_substring.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_substring.c
gcc -c -o gcc_mswudll\wxregex_pcre2_tables.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_tables.o -MFgcc_mswudll\wxregex_pcre2_tables.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_tables.c
gcc -c -o gcc_mswudll\wxregex_pcre2_ucd.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_ucd.o -MFgcc_mswudll\wxregex_pcre2_ucd.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_ucd.c
gcc -c -o gcc_mswudll\wxregex_pcre2_valid_utf.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_valid_utf.o -MFgcc_mswudll\wxregex_pcre2_valid_utf.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_valid_utf.c
gcc -c -o gcc_mswudll\wxregex_pcre2_xclass.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_xclass.o -MFgcc_mswudll\wxregex_pcre2_xclass.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_xclass.c
gcc -c -o gcc_mswudll\wxregex_pcre2_chartables.o  -O2 -mthreads -DNDEBUG -I..\..\include -I..\..\lib\gcc_dll\mswu -I..\..\3rdparty\pcre\src\wx -D__WX__ -DHAVE_CONFIG_H -D_UNICODE   -MTgcc_mswudll\wxregex_pcre2_chartables.o -MFgcc_mswudll\wxregex_pcre2_chartables.o.d -MD -MP ../../3rdparty/pcre/src/pcre2_chartables.c
if exist ..\..\lib\gcc_dll\libwxregexu.a del ..\..\lib\gcc_dll\libwxregexu.a
ar rcu ..\..\lib\gcc_dll\libwxregexu.a @..\..\lib\gcc_dll\libwxregexu.a.rsp
ar: file "@../../lib/gcc_dll/libwxregexu.a.rsp": The system cannot find the path specified.
mingw32-make: *** [makefile.gcc:5364: ..\..\lib\gcc_dll\libwxregexu.a] Error 1

Я точно следовал инструкциям, но не смог решить проблему. MinGW64 был загружен с GitHub («https://github.com/niXman/mingw-builds-binaries/releases»), это версия 13.2.0-rev1:

C:\SwDev\WxWidgets\v_3.2.4\build\msw>%MINGW64_v13_2_0_r1%\g++ --version

g++ (x86_64-win32-seh-rev1, создан проектом MinGW-Builds) 13.2.0

Авторское право (C) 2023 Free Software Foundation, Inc.

Я попробовал также версию 12, но получил ту же ошибку.

Когда я перехожу к поиску по не найденному пути ("@../../lib/gcc_dll/libwxregexu.a.rsp"), он присутствует и находится "...\lib\gcc_dll".

У меня нет опыта сборки с помощью make, и я не могу понять суть вывода. Интересно, исходит ли проблема от компилятора, но я не могу найти способ ее понять.

Кто-нибудь когда-нибудь сталкивался с этой проблемой или имел предложения/объяснения по этой проблеме?

Заранее спасибо.

вы не используете команду из документации... ;-) Также я предполагаю, что вы загрузили исходный архив MSW из wxwidgets.prg/downloads, верно? И еще - есть ли у вас место на жестком диске?

Igor 08.05.2024 22:11

Да, я добавил путь, чтобы наверняка запустить нужный мне mingw32-make.exe (у меня на компьютере их несколько). Но я попробовал без этого и получил ту же ошибку. Что касается остальных вопросов, я скачал его с wxwidgets и у меня осталось много места (> 20 ГБ)

mgrs_ 08.05.2024 23:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема найдена. У меня было несколько ar.exe, которые вызывались в неудачной сборке выше (найдена запись

где

в строке cmd). Более того, они были разными, что легко увидеть, если написать:

ар -в

Чтобы устранить проблему, после открытия cmd.exe я установил путь к MinGW, а затем запустил сборку согласно инструкциям следующим образом:

C:>set PATH=C:\SwDev\MinGW\x64\v_13.2.0\mingw64\bin

C:>эхо %PATH%

C:\SwDev\MinGW\x64\v_13.2.0\mingw64\bin

C:>cd C:\SwDev\WxWidgets\v_3.2.4\build\msw

C:\SwDev\WxWidgets\v_3.2.4\build\msw>mingw32-make -f makefile.gcc SHARED=1 BUILD=release

Таким образом, он работает правильно.

Другие вопросы по теме