要编译32位Linux的minizip,可以按照以下步骤进行操作:
sudo apt-get install gcc-multilib g++-multilib
git clone https://github.com/nmoinvaz/minizip.git
cd minizip
mkdir build32
cd build32
cmake -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 ..
make
以上是编译32位Linux的minizip的解决方法。下面是一个完整的示例代码,演示如何使用编译后的minizip库来创建和解压缩zip文件:
#include
#include
#include "minizip/zip.h"
#include "minizip/unzip.h"
int main() {
const char* zipFileName = "test.zip";
const char* fileName = "hello.txt";
// 创建一个zip文件
zipFile zf = zipOpen(zipFileName, APPEND_STATUS_CREATE);
if (zf == NULL) {
printf("无法创建zip文件\n");
return 1;
}
// 将一个文件添加到zip文件中
FILE* file = fopen(fileName, "rb");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
fseek(file, 0, SEEK_END);
long fileSize = ftell(file);
fseek(file, 0, SEEK_SET);
uint8_t* fileBuffer = (uint8_t*)malloc(fileSize);
fread(fileBuffer, fileSize, 1, file);
fclose(file);
int result = zipOpenNewFileInZip(zf, fileName, NULL, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION);
if (result != ZIP_OK) {
printf("无法将文件添加到zip文件中\n");
return 1;
}
result = zipWriteInFileInZip(zf, fileBuffer, fileSize);
if (result != ZIP_OK) {
printf("无法写入文件到zip文件中\n");
return 1;
}
result = zipCloseFileInZip(zf);
if (result != ZIP_OK) {
printf("无法关闭zip文件\n");
return 1;
}
result = zipClose(zf, NULL);
if (result != ZIP_OK) {
printf("无法关闭zip文件\n");
return 1;
}
printf("zip文件已创建\n");
// 解压缩zip文件
unzFile uzf = unzOpen(zipFileName);
if (uzf == NULL) {
printf("无法打开zip文件\n");
return 1;
}
// 获取zip文件中的第一个文件
result = unzGoToFirstFile(uzf);
if (result != UNZ_OK) {
printf("无法定位到zip文件中的第一个文件\n");
return 1;
}
char extractedFileName[256];
unz_file_info fileInfo;
result = unzGetCurrentFileInfo(uzf, &fileInfo, extractedFileName, sizeof(extractedFileName), NULL, 0, NULL, 0);
if (result != UNZ_OK) {
printf("无法获取zip文件中的文件信息\n");
return 1;
}
result = unzOpenCurrentFile(uzf);
if (result != UNZ_OK) {
printf("无法打开zip文件中的文件\n");
return 1;
}
uint8_t* extractedFileBuffer = (uint8_t*)malloc(fileInfo.uncompressed_size);
result = unzReadCurrentFile(uzf, extractedFileBuffer, fileInfo.uncompressed_size