Compiler errors when compiling gps software library "GPSParser.h"

Arduino: 1.8.19 (Linux), Board: “Arduino UNO”

/snap/arduino/85/arduino-builder -dump-prefs -logger=machine -hardware /snap/arduino/85/hardware -hardware /home/cocky/snap/arduino/85/.arduino15/packages -tools /snap/arduino/85/tools-builder -tools /snap/arduino/85/hardware/tools/avr -tools /home/cocky/snap/arduino/85/.arduino15/packages -built-in-libraries /snap/arduino/85/libraries -libraries /home/cocky/Documents/Arduino/libraries -fqbn=arduino:avr:uno -vid-pid=2341_0043 -ide-version=10819 -build-path /tmp/arduino_build_532571 -warnings=default -build-cache /tmp/arduino_cache_122363 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avrdude/8.0.0-arduino1 -prefs=runtime.tools.avrdude-8.0.0-arduino1.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avrdude/8.0.0-arduino1 -prefs=runtime.tools.avr-gcc.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.arduinoOTA.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -verbose /home/cocky/Documents/Arduino/CoreElectronicsGPS2/CoreElectronicsGPS2.ino
/snap/arduino/85/arduino-builder -compile -logger=machine -hardware /snap/arduino/85/hardware -hardware /home/cocky/snap/arduino/85/.arduino15/packages -tools /snap/arduino/85/tools-builder -tools /snap/arduino/85/hardware/tools/avr -tools /home/cocky/snap/arduino/85/.arduino15/packages -built-in-libraries /snap/arduino/85/libraries -libraries /home/cocky/Documents/Arduino/libraries -fqbn=arduino:avr:uno -vid-pid=2341_0043 -ide-version=10819 -build-path /tmp/arduino_build_532571 -warnings=default -build-cache /tmp/arduino_cache_122363 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avrdude/8.0.0-arduino1 -prefs=runtime.tools.avrdude-8.0.0-arduino1.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avrdude/8.0.0-arduino1 -prefs=runtime.tools.avr-gcc.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.arduinoOTA.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -verbose /home/cocky/Documents/Arduino/CoreElectronicsGPS2/CoreElectronicsGPS2.ino
Using board ‘uno’ from platform in folder: /home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7
Using core ‘arduino’ from platform in folder: /home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7
Detecting libraries used…
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/variants/standard /tmp/arduino_build_532571/sketch/CoreElectronicsGPS2.ino.cpp -o /dev/null
Alternatives for SoftwareSerial.h: [SoftwareSerial@1.0]
ResolveLibrary(SoftwareSerial.h)
→ candidates: [SoftwareSerial@1.0]
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/variants/standard -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/libraries/SoftwareSerial/src /tmp/arduino_build_532571/sketch/CoreElectronicsGPS2.ino.cpp -o /dev/null
Alternatives for GPSParser.h: [GPSParser]
ResolveLibrary(GPSParser.h)
→ candidates: [GPSParser]
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/variants/standard -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/libraries/SoftwareSerial/src -I/home/cocky/Documents/Arduino/libraries/GPSParser /tmp/arduino_build_532571/sketch/CoreElectronicsGPS2.ino.cpp -o /dev/null
Using cached library dependencies for file: /home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/libraries/SoftwareSerial/src/SoftwareSerial.cpp
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/variants/standard -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/libraries/SoftwareSerial/src -I/home/cocky/Documents/Arduino/libraries/GPSParser /home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.cpp -o /dev/null
Generating function prototypes…
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/variants/standard -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/libraries/SoftwareSerial/src -I/home/cocky/Documents/Arduino/libraries/GPSParser /tmp/arduino_build_532571/sketch/CoreElectronicsGPS2.ino.cpp -o /tmp/arduino_build_532571/preproc/ctags_target_for_gcc_minus_e.cpp
/snap/arduino/85/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c+±kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino_build_532571/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch…
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/variants/standard -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/libraries/SoftwareSerial/src -I/home/cocky/Documents/Arduino/libraries/GPSParser /tmp/arduino_build_532571/sketch/CoreElectronicsGPS2.ino.cpp -o /tmp/arduino_build_532571/sketch/CoreElectronicsGPS2.ino.cpp.o
Compiling libraries…
Compiling library “SoftwareSerial”
Using previously compiled file: /tmp/arduino_build_532571/libraries/SoftwareSerial/SoftwareSerial.cpp.o
Compiling library “GPSParser”
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/variants/standard -I/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/libraries/SoftwareSerial/src -I/home/cocky/Documents/Arduino/libraries/GPSParser /home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.cpp -o /tmp/arduino_build_532571/libraries/GPSParser/GPSParser.cpp.o
/home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.cpp: In function ‘GPSData parse_gps_data(String)’:
/home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.cpp:108:43: error: ‘GPSData GPSReader::_process_nmea_data(String)’ is private within this context
return tmp._process_nmea_data(nmea_chunk);
^
In file included from /home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.cpp:2:0:
/home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.h:50:13: note: declared private here
GPSData _process_nmea_data(String nmea_data);
^~~~~~~~~~~~~~~~~~
/home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.cpp: In member function ‘GPSData GPSReader::_process_nmea_data(String)’:
/home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.cpp:125:30: error: no match for ‘operator=’ (operand types are ‘String’ and ‘void’)
sentence = sentence.trim();
^
In file included from /home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/Arduino.h:232:0,
from /home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.h:8,
from /home/cocky/Documents/Arduino/libraries/GPSParser/GPSParser.cpp:2:
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:89:11: note: candidate: String& String::operator=(const String&)
String & operator = (const String &rhs);
^~~~~~~~
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:89:11: note: no known conversion for argument 1 from ‘void’ to ‘const String&’
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:90:11: note: candidate: String& String::operator=(const char*)
String & operator = (const char cstr);
^~~~~~~~
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:90:11: note: no known conversion for argument 1 from ‘void’ to 'const char

/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:91:11: note: candidate: String& String::operator=(const __FlashStringHelper*)
String & operator = (const __FlashStringHelper str);
^~~~~~~~
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:91:11: note: no known conversion for argument 1 from ‘void’ to 'const __FlashStringHelper

/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:93:11: note: candidate: String& String::operator=(String&&)
String & operator = (String &&rval);
^~~~~~~~
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:93:11: note: no known conversion for argument 1 from ‘void’ to ‘String&&’
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:94:11: note: candidate: String& String::operator=(StringSumHelper&&)
String & operator = (StringSumHelper &&rval);
^~~~~~~~
/home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/cores/arduino/WString.h:94:11: note: no known conversion for argument 1 from ‘void’ to ‘StringSumHelper&&’
Using library SoftwareSerial at version 1.0 in folder: /home/cocky/snap/arduino/85/.arduino15/packages/arduino/hardware/avr/1.8.7/libraries/SoftwareSerial
Using library GPSParser in folder: /home/cocky/Documents/Arduino/libraries/GPSParser (legacy)
exit status 1
Error compiling for board Arduino UNO.

hi,

You’re getting two different errors here, both from the GPSParser library.

  1. Private function access error: error: ‘GPSData GPSReader::_process_nmea_data(String)’ is private within this context

This happens because _process_nmea_data() is declared as private in the header file, but you’re calling it from outside the class.

  1. Incorrect use of string.trim()

error: no match for ‘operator=’ (operand types are ‘String’ and ‘void’)
sentence = sentence.trim();

In Arduino, trim() does not return anything (void) it modifies the string directly.

2 Likes

Hey there, @Chris312080, @Aakriti314205 has spotted the two key issues already, which are with the GPSParser library code itself, not your Uno or Linux setup.

We can blunt force go through and modify the code to get it working, for instance changing:

sentence = sentence.trim();

to simply:

sentence.trim();

And either make _process_nmea_data() public in GPSParser.h, or better yet, avoid calling that private method from outside the class.

But that may make more problems than it would solve. Let us know how that goes and if you’re still seeing compilation errors could you please also upload the code? That’ll make it easier to resolve the issues you’re having.

2 Likes