Giter Club home page Giter Club logo

unziplib's Introduction

unzipLIB

Copyright (c) 2021 BitBank Software, Inc.
Written by Larry Bank
[email protected]

What is it?

An 'embedded-friendly' (aka Arduino) library to extract and decompress files from ZIP archives

Why did you write it?

I wanted to be able to unzip files on MCUs for various projects and I couldn't find any libraries that would do the job. The thing that prevents most Linux open source projects from running on embedded boards is their use of the file system and heap management. There is support for malloc/free on Arduino, but it's better to control how memory is used more directly (e.g. TCM vs FLASH vs DDR).

What's special about it?

I designed the unzip library to not rely on malloc/free, but instead to have a fixed class/structure which could be managed by the user. I also removed the dependency on the file system and instead offer a set of callback hooks to allow zip files to be read from memory, SDCard or any media. These two features give it maximum flexibility to run on low end systems.

Feature summary:

  • Runs on any MCU with at least 41K of free RAM
  • No external dependencies (including malloc/free, file system calls)
  • unzip API implemented in C and C++
  • ZIP files can come from RAM, FLASH, SDCard or any media by using callbacks
  • Decompress files by reading any sized chunk at a time (full sized buffer not needed)
  • Compiles on any target CPU

Documentation:

Detailed information about the API is in the Wiki
See the examples folder for easy starting points

unziplib's People

Contributors

adrianotiger avatar bitbank2 avatar johnboiles avatar piltom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

unziplib's Issues

Chunk by chunk read

Hi,

I'm still not able to read the unzipped data chunk by chunk.
If I would read it at once, It would not fit into RAM. My unzipped data size is 393 KB
If I comment out Block 2, it is working, but I would like to read 512 bytes one after another:

...
#define BUFF_SIZE 512
static uint8_t l_Buff[BUFF_SIZE];
...
    // Block 1
    zip.openCurrentFile();
    mySeek(&myfile, 0, SEEK_SET);
    int readSize = zip.readCurrentFile(l_Buff, BUFF_SIZE);
    Serial.print("Bytes read in buffer: "); Serial.println(readSize);
    binFile.write(l_Buff, BUFF_SIZE);

    // Block 2
    mySeek(&myfile, 512, SEEK_SET);
    readSize = zip.readCurrentFile(l_Buff, BUFF_SIZE);
    Serial.print("Bytes read in buffer: "); Serial.println(readSize);
    binFile.write(l_Buff, BUFF_SIZE);

ESP32

Good day. Please give an example of unzip to esp32 from SPIFFS. Thank you.

can't get my png

Hi,

thanks for sharing your library

I am testing your example on ESP32 to get pgn on my SD card
I found a little mistake in your code at line 85 : rc = rc = zip.openZIP(name, myOpen, myClose, myRead, mySeek);
I think it should be rc = zip.openZIP(name, myOpen, myClose, myRead, mySeek);
Right ?

Now I place a chitubox zip at root on the SD card (I check there is PNG there inside)
the serial give me

File: Carriage.ZIP
[869141][E][vfs_api.cpp:29] open(): Carriage.ZIP does not start with /

this error message seem to come from library, can you help to solve the pb ?

Kind regards

Chunkwise write the uncompressed file.

Hi,

I could create a simple program to test your library with SdFat library, instead of standard Arduino SD.
But I realized, that I still have a problem.
I would like to implement FOTA, so I will download the application.zip file.
Then I want to unzip it (application.bin).
The .bin file is quite large (393216 byte). I don't have this much memory. (I have 56+4 KB of SRAM on STM32F429ZI).

So my question, how can I use your library, so that I can write this larga application.bin to the SD card in chunkwise manner?

Here is my code:

#include <Arduino.h>
#include <unzipLIB.h>
#include "SdFat.h"
#include "sdios.h"

SPIClass SPI_4(PE6, PE5, PE2); // MOSI, MISO. SCLK
const uint8_t SD_CS_PIN = PE4;
#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(4), &SPI_4)

UNZIP zip; // statically allocate the UNZIP structure (41K)
SdFat sd;
File root;
static File myfile;
static File myfileAnother;

void * myOpen(const char *filename, int32_t *size) {
  root.open("/");
  myfileAnother.open(filename);
  *size = (uint32_t)myfileAnother.fileSize();
  return (void *)&myfileAnother;
}

void myClose(void *p) {
  ZIPFILE *pzf = (ZIPFILE *)p;
  File *f = (File *)pzf->fHandle;
  if (f) f->close();
}

int32_t myRead(void *p, uint8_t *buffer, int32_t length) {
  ZIPFILE *pzf = (ZIPFILE *)p;
  File *f = (File *)pzf->fHandle;
  return f->read(buffer, length);
}

int32_t mySeek(void *p, int32_t position, int iType) {
  ZIPFILE *pzf = (ZIPFILE *)p;
  File *f = (File *)pzf->fHandle;
  if (iType == SEEK_SET)
    return f->seek(position);
  else if (iType == SEEK_END) {
    return f->seek(position + pzf->iSize); 
  } else { // SEEK_CUR
    long l = f->position();
    return f->seek(l + position);
  }
}

void setup() {
  Serial.begin(115200);

  while (!Serial && millis() < 3000);
  Serial.println("Search for ZIP files on the SD card");
  
  if (!sd.begin(SD_CONFIG))
  {
    sd.initErrorHalt(&Serial);
    Serial.println("Unable to access SD Card");
  }

  if (!root.open("/"))
  {
    Serial.println("Open root failed");
  }
  //////////////////////////////////////////////////////////////////////////////
  int rc;
  char szComment[256], szName[256];
  unz_file_info fi;

  const char *name = "application.zip";
  if (!myfile.open(name, O_RDONLY))
  {
    Serial.println("Opening application.zip failed");
  }
  Serial.println("Openend application.zip");
  rc = rc = zip.openZIP(name, myOpen, myClose, myRead, mySeek);
  if (rc == UNZ_OK) {
    Serial.print("ZIP file found");

    // Display the global comment and all of the filenames within
    rc = zip.getGlobalComment(szComment, sizeof(szComment));
    Serial.print("Files in this archive: ");
    zip.gotoFirstFile();
    rc = UNZ_OK;
    rc = zip.getFileInfo(&fi, szName, sizeof(szName), NULL, 0, szComment, sizeof(szComment));

    if (rc == UNZ_OK) {
      Serial.println(szName);
      Serial.print("Compressed size: "); Serial.println(fi.compressed_size, DEC);
      Serial.print("Uncompressed size: "); Serial.println(fi.uncompressed_size, DEC);
      
    }
    zip.closeZIP();
  }
}

void loop() {}

how to unzip and LCDdisplay the included PNG files ?

Hi,

Thanks a lot to share those nice library

I already use PNGdec for some firmware running on ESP32
Now I would like to extract PGN from a ZIP located on my SD cardand send this on LCD

I start with you nice sample code but done for BMP image
I try to change and add PNGdec but I cannot succeed to extract image

I saw you do extract image here
icBitmap = (uint8_t *)malloc(fi.uncompressed_size); // allocate enough to hold the bitmap

But how to pass this to PNGdec ?
As using filemane give me dimension and other things but cannot decode and display

Kind regards

conflicting with other

Hi,

I have tested the SD example that works good
But porting the library in my sketch ( just #include <unzipLIB.h>) bring compilation error :

c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\adler32.c.o: in function adler32_z': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/adler32.c:67: multiple definition of adler32_z'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\adler32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/adler32.c:67: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\adler32.c.o: in function adler32': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/adler32.c:138: multiple definition of adler32'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\adler32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/adler32.c:138: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\adler32.c.o: in function adler32_combine': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/adler32.c:176: multiple definition of adler32_combine'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\adler32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/adler32.c:176: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\adler32.c.o: in function adler32_combine64': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/adler32.c:184: multiple definition of adler32_combine64'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\adler32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/adler32.c:184: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function get_crc_table': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:189: multiple definition of get_crc_table'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:189: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function crc32_z': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:206: multiple definition of crc32_z'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:206: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function crc32': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:241: multiple definition of crc32'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:241: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function crc32_combine': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:432: multiple definition of crc32_combine'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:432: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function crc32_combine64': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:440: multiple definition of crc32_combine64'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:440: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\infback.c.o: in function inflateBackInit_': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/infback.c:34: multiple definition of inflateBackInit_'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\infback.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/infback.c:34: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\infback.c.o: in function inflateBack': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/infback.c:256: multiple definition of inflateBack'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\infback.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/infback.c:256: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\infback.c.o: in function inflateBackEnd': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/infback.c:633: multiple definition of inflateBackEnd'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\infback.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/infback.c:633: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inffast.c.o: in function inflate_fast': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inffast.c:53: multiple definition of inflate_fast'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inffast.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inffast.c:53: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateResetKeep': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:121: multiple definition of inflateResetKeep'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:121: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateReset': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:146: multiple definition of inflateReset'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:146: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateReset2': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:160: multiple definition of inflateReset2'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:160: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateInit2_': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:201: multiple definition of inflateInit2_'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:200: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateInit_': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:247: multiple definition of inflateInit_'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:244: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflatePrime': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:255: multiple definition of inflatePrime'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:252: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflate': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:631: multiple definition of inflate'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:626: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateEnd': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1293: multiple definition of inflateEnd'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1280: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateGetDictionary': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1309: multiple definition of inflateGetDictionary'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1296: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateSetDictionary': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1332: multiple definition of inflateSetDictionary'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1319: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateGetHeader': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1366: multiple definition of inflateGetHeader'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1353: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateSync': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1416: multiple definition of inflateSync'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1403: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateSyncPoint': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1467: multiple definition of inflateSyncPoint'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1454: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateCopy': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1478: multiple definition of inflateCopy'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1465: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateUndermine': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1525: multiple definition of inflateUndermine'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1512: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateValidate': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1543: multiple definition of inflateValidate'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1530: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateMark': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1557: multiple definition of inflateMark'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1544: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateCodesUsed': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1570: multiple definition of inflateCodesUsed'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1557: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inftrees.c.o: in function inflate_table': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inftrees.c:39: multiple definition of inflate_table'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inftrees.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inftrees.c:39: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inftrees.c.o:c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inftrees.c:11: multiple definition of inflate_copyright'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inftrees.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inftrees.c:11: first defined here c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function zlibVersion':
c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:28: multiple definition of zlibVersion'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:28: first defined here c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function zlibCompileFlags':
c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:33: multiple definition of zlibCompileFlags'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:33: first defined here c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:13: multiple definition of z_errmsg'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:13: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function zError': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:135: multiple definition of zError'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:135: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function zcalloc': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:309: multiple definition of zcalloc'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:309: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function zcfree': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:319: multiple definition of zcfree'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:319: first defined here
collect2.exe: error: ld returned 1 exit status

Any suggestion for fixing those problem ?

best rgds

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.