Как установить lua -zlib с LuaRocks на Windows? - PullRequest
1 голос
/ 09 февраля 2020

Я написал программу с Lua в среде Linux, и она использует Lua модуль ZipWriter и его зависимости (lua-zlib и struct). Я пытаюсь также выпустить Windows, но у меня проблемы с сборкой lua-zlib.

Я использую LuaRocks для установки всех других пакетов стандартными командами , Итак, чтобы установить lua-zlib, я просто использовал > luarocks install lua-zlib, но, конечно, это не сработало, поскольку сам zlib не был установлен, а lua-zlib является привязкой к этой библиотеке. ,

Installing https://luarocks.org/lua-zlib-1.2-0.src.rock

Error: Could not find header file for ZLIB
  No file zlib.h in c:/external/include
  No file zlib.h in c:/mingw/include
  No file zlib.h in c:/windows/system32/include
You may have to install ZLIB in your system and/or pass ZLIB_DIR or ZLIB_INCDIR to the luarocks command.
Example: luarocks install lua-zlib ZLIB_DIR=/usr/local

Итак, я нашел ссылку на этой странице для различных загрузок zlib для Windows. Я скачал настройки «Полный пакет, кроме источников» и «Источники», установил их, и они создали папки и файлы в каталоге C:\Program Files (x86)\GnuWin32, все относящиеся к zlib. Я последовал примеру, предоставленному в этом журнале ошибок, и снова попытался запустить luarocks:

> luarocks install lua-zlib ZLIB_DIR="C:\Program Files (x86)\GnuWin32"

Но, опять же, еще одна ошибка:

Installing https://luarocks.org/lua-zlib-1.2-0.src.rock

mingw32-gcc -O2 -c -o lua_zlib.o -IC:\lua\luajit lua_zlib.c -DLZLIB_COMPAT -IC:\Program Files (x86)\GnuWin32/include
mingw32-gcc -shared -o zlib.dll lua_zlib.o -lC:\Program Files (x86)\GnuWin32/zlib C:\lua\luajit/lua51.dll -lMSVCRT
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: cannot find -lC:\Program Files (x86)\GnuWin32/zlib
collect2.exe: error: ld returned 1 exit status

Error: Build error: Failed compiling module zlib.dll

И действительно, не было файла / каталога в C:\Program Files (x86)\GnuWin32/zlib, как показывает ошибка. По какой-то причине это не было установлено. Что мне не хватает?

Примечание: как показывает журнал ошибок, у меня mingw32-gcc в качестве компилятора, на случай, если это будет полезно.

1 Ответ

1 голос
/ 10 февраля 2020

Должно работать вместо использования stati c zlib. Для этого вы можете следовать этому руководству на Github. По сути, вам нужно

  1. Установленная функциональная библиотека zlib
    Скачать с https://zlib.net, использовать cmake для создания решения Visual Studio (например, в c : \ lib \ zlib)

    cmake .. -DCMAKE_INSTALL_PREFIX=c:\lib\zlib
    

    , затем соберите проект INSTALL из полученного решения, используя тип сборки 'Release' в VS.

  2. Загрузить luarock lua -zlib:

    mkdir c:\lib\lua-zlib
    c:
    cd \lib\lua-zlib
    luarocks download lua-zlib
    
  3. Отредактируйте файл lua -zlib * .rockspe c (например, в c: \ lib \ lua -zlib), добавить "ZLIB_STATIC" к build.modules.zlib.defines, изменить platform.windows.modules.zlib.libraries с "$(ZLIB_LIBDIR)/zlib" на "$(ZLIB_LIBDIR)/zlibstatic"

  4. Установить luarock из локального источника (изменить имя файла в соответствии с существующим) :

    cd c:\lib\lua-zlib 
    luarocks install lua-zlib*.rockspec
    
...