Я пытаюсь создать сжатый архив на Windows с libarchive, и в настоящее время он не работает. Я могу создавать архивы zip или pax_restricted (tar) без сжатия, без каких-либо проблем.
Чтобы добавить сжатие, я попробовал несколько комбинаций из следующих:
archive_write_set_compression_lzip(lWriteArchive);
archive_write_add_filter_lzip(lWriteArchive);
archive_write_set_compression_gzip(lWriteArchive);
archive_write_add_filter_gzip(lWriteArchive);
archive_write_set_format_zip(lWriteArchive);
archive_write_set_format_pax_restricted(lWriteArchive);
В основном я пытался использовать сжатие lzip в формате zip и сжатие gzip в формате pax_restricted.
Во-первых, я не уверен, должен ли я использовать archive_write_set_compression_ * или archive_write_add_filter_ *.
Когда я пытаюсь добавить сжатие lzip, и я захожу в функцию, я вижу, что она возвращает ARCHIVE_FATAL с сообщением об ошибке «Сжатие lzma не поддерживается на этой платформе».
Когда я пытаюсь добавить сжатие gzip и вхожу в функцию, я вижу, что она возвращает ARCHIVE_WARN с сообщением об ошибке «Использование внешней программы gzip». Если я позволю процессу идти дальше, результирующий архив будет иметь нулевой размер.
У меня такое ощущение, что в системах Unix есть системные библиотеки для lzma и gzip, которые libarchive использует для сжатия и которые недоступны в Windows.
Я собрал libarchive с использованием последней стабильной версии, следуя инструкциям по использованию CMake и т. Д. Я не заметил никаких ошибок в конфигурации CMake, например, что мне не хватало lzma или gzip.
Спасибо за любую помощь.
Задача ещё не решена.
Других решений пока нет …