mziwisky / esp8266-dev

An isolated build environment for the ESP8266
34 stars 16 forks source link

Heatshrink CLI tool fails to compile on Linux Mint 18.3 VM with x86_64 GCC 5.4 #8

Closed SoftwareGuy closed 6 years ago

SoftwareGuy commented 6 years ago

I git cloned your repo, changed directory to esphttpd/lib/heatshrink and ran make heatshrink.

GCC info:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.9' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 

The actual error:

heatshrink.c: In function ‘proc_args’:
heatshrink.c:388:17: warning: implicit declaration of function ‘getopt’ [-Wimplicit-function-declaration]
     while ((a = getopt(argc, argv, "hedi:w:l:v")) != -1) {
                 ^
heatshrink.c:397:51: error: ‘optarg’ undeclared (first use in this function)
             cfg->decoder_input_buffer_size = atoi(optarg);
                                                   ^
heatshrink.c:397:51: note: each undeclared identifier is reported only once for each function it appears in
heatshrink.c:413:13: error: ‘optind’ undeclared (first use in this function)
     argc -= optind;
             ^
make: *** [heatshrink] Error 1

cc -std=c99 -g -Wall -Wextra -pedantic  -O3 -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations    heatshrink.c heatshrink_encoder.o heatshrink_decoder.o   -o heatshrink
<builtin>: recipe for target 'heatshrink' failed

I'd like to use this library on my ESP8266/ESP32 based feather board(s). However, if I can't use the command line tool to compress the files, I'm kinda stuck.

mziwisky commented 6 years ago

Please read the README. This repository provides the configuration for a vagrant VM that can be used to build and flash images. Both esphttpd and heatshrink are external projects that are included here just as a nice sample starting point for your own applications. They ought to build ok inside the vagrant VM, but if you're having problems building them on your native host or in some other VM, then your problem is outside the scope of this project.