Ошибка: Ошибка сборки: Не удалось скомпилировать модуль mime\core.dll Как решить эту проблему?

Вопрос или проблема

Я установил lua5.4.2. Системная переменная PATH уже содержит путь. mingw-w64 использует x86_64-14.2.0-release-win32-seh-ucrt-rt_v12-rev0, а luarocks использует LuaRocks 3.11.1.
Ниже приводится ошибка, которую я получил при установке Luasocket на системе Windows 10 64-бит. Пожалуйста, дайте мне какие-нибудь рекомендации. Большое спасибо.

C:\Users\40341>luarocks install luasocket
Установка https://luarocks.org/luasocket-3.1.0-1.src.rock

luasocket 3.1.0-1 требует lua >= 5.1 (5.4-1 предоставлен VM: успешно)
x86_64-w64-mingw32-gcc -O2 -c -o src/luasocket.o -IC:\lua\lua54\include src/luasocket.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/timeout.o -IC:\lua\lua54\include src/timeout.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/buffer.o -IC:\lua\lua54\include src/buffer.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/io.o -IC:\lua\lua54\include src/io.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/auxiliar.o -IC:\lua\lua54\include src/auxiliar.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/options.o -IC:\lua\lua54\include src/options.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/inet.o -IC:\lua\lua54\include src/inet.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/except.o -IC:\lua\lua54\include src/except.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/select.o -IC:\lua\lua54\include src/select.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/tcp.o -IC:\lua\lua54\include src/tcp.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/udp.o -IC:\lua\lua54\include src/udp.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/compat.o -IC:\lua\lua54\include src/compat.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/wsocket.o -IC:\lua\lua54\include src/wsocket.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc  -shared -o C:\Users\40341\AppData\Local\Temp\luarocks_build-LuaSocket-3.1.0-1-2988190\socket\core.dll src/luasocket.o src/timeout.o src/buffer.o src/io.o src/auxiliar.o src/options.o src/inet.o src/except.o src/select.o src/tcp.o src/udp.o src/compat.o src/wsocket.o -lws2_32 C:\lua\lua54.dll -lm
x86_64-w64-mingw32-gcc -O2 -c -o src/mime.o -IC:\lua\lua54\include src/mime.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc -O2 -c -o src/compat.o -IC:\lua\lua54\include src/compat.c -DLUASOCKET_DEBUG -DWINVER=0x0501 -Ic:\windows\system32\include
x86_64-w64-mingw32-gcc  -shared -o C:\Users\40341\AppData\Local\Temp\luarocks_build-LuaSocket-3.1.0-1-2988190\mime\core.dll src/mime.o src/compat.o -Lc:\windows\system32 C:\lua\lua54.dll -lm
C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/lib/../lib/dllcrt2.o:crtdll.c:(.text+0x148): неопределенная ссылка на `_execute_onexit_table'
C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/lib/../lib/dllcrt2.o:crtdll.c:(.text+0x8): неопределенная ссылка на `_initialize_onexit_table'
C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/lib/../lib/dllcrt2.o:crtdll.c:(.text+0x34b): неопределенная ссылка на `_register_onexit_function'
C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w65/mingw32/bin/ld.exe: C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-pseudo-reloc.o):pseudo-reloc.c:(.text+0x28): неопределенная ссылка на `__acrt_iob_func'
C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-pseudo-reloc.o):pseudo-reloc.c:(.text+0x51): неопределенная ссылка на `__acrt_iob_func'
collect2.exe: ошибка: ld вернул 1 статус выхода

Ошибка: Ошибка сборки: Не удалось скомпилировать модуль mime\core.dll

Я получаю ту же ошибку после повторной проверки всех моих версий пакетов и путей системных переменных

Ответ или решение

Ошибка сборки модуля mime\core.dll при установке Luasocket может быть вызвана несколькими причинами, включая проблемы с компиляцией, несовместимость библиотек или некорректные пути в системных переменных. Давайте разберем основные шаги, которые могут помочь в решении вашей проблемы.

1. Проверка среды разработки

Во-первых, убедитесь, что у вас установлены все необходимые компоненты для компиляции и сборки Lua. Вы уже упомянули, что у вас установлен Lua 5.4.2 и LuaRocks 3.11.1, а также среда MinGW-w64. Убедитесь, что версии компилятора и других компонентов совместимы друг с другом. Попробуйте следующее:

  • Обновите MinGW-w64 до последней стабильной версии.
  • Используйте MinGW с поддержкой UCRT (Universal C Runtime). Убедитесь, что вы используете версию компилятора, включая seh, win32, и ucrt.

2. Настройка переменных окружения

Проверьте, корректно ли настроены пути в системных переменных:

  • Убедитесь, что директория с установленным Lua и LuaRocks добавлена в PATH.
  • Проверьте, правильно ли указаны пути к библиотекам. В вашем случае это путь к C:\lua\lua54\include и динамической библиотеке C:\lua\lua54.dll. Убедитесь, что файл lua54.dll действительно существует и находится в указанной папке.

3. Проверка установки зависимостей

Ошибка, которую вы наблюдаете, может быть связана с отсутствием необходимых зависимостей. Убедитесь, что у вас установлены:

  • Библиотеки, используемые для разработки, такие как ws2_32 (Windows Sockets).
  • Попробуйте запустить команду luarocks install luasocket с флагом --local, чтобы установить пакет локально и увидеть, если возникнут другие ошибки, которые могут пролить свет на проблему.

4. Компиляция вручную

Если ошибки продолжают возникать, вы можете попробовать собрать библиотеку вручную:

  • Загрузите исходные файлы Luasocket из репозитория.
  • Откройте командную строку в папке, где находятся эти файлы.
  • Попробуйте собрать библиотеку с помощью команды gcc с необходимыми флагами и опциями сборки.
gcc -o core.dll -shared src/mime.o src/compat.o -L<путь_к_библиотекам> -lws2_32 -LC:\lua -liu54.dll

5. Обновление инструментов

Если все вышеперечисленное не помогло, вам стоит проверить, нет ли более новых версий lua, luarocks или MinGW и обновить их. Иногда проблемы совместимости возникают просто из-за устаревших инструментов.

Заключение

Следуя этим рекомендациям, вы увеличите вероятность успешной установки Luasocket и разрешите проблему с компиляцией модуля mime\core.dll. Если ошибка все же будет сохраняться, постарайтесь детализировать ее, чтобы более точно диагностировать проблему. Вы также можете обратиться к документации соответствующих инструментов или к сообществу Lua для получения дополнительной помощи.

Оцените материал
Добавить комментарий

Капча загружается...