mikaelnousiainen / RS41ng

Custom firmware for Vaisala RS41 and Graw DFM-17 radiosondes with support for amateur radio use. Ideal for tracking high-altitude balloons. Supported modes include APRS, Horus 4FSK mode, CATS, morse code (CW) and additional digital modes like WSPR and FT8 via Si5351.
GNU General Public License v2.0
109 stars 28 forks source link

compilation fails even with libbsd-dev installed on ubuntu jammy #31

Closed mitchrk closed 1 year ago

mitchrk commented 1 year ago

I am finding that compilation fails even with libbsd-dev installed on ubuntu jammy Issue is with the strlcpy vs strncpy

-- The C compiler identification is GNU 11.3.0 -- The CXX compiler identification is GNU 11.3.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /home/mitch/RS41ng/build [ 1%] Building C object src/CMakeFiles/RS41ng.elf.dir/bmp280_handler.c.o [ 2%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/aprs/aprs.c.o [ 3%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/aprs/aprs_position.c.o [ 4%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/aprs/aprs_weather.c.o [ 5%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/ax25/ax25.c.o [ 6%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/bell/bell.c.o [ 8%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/horus/horus_common.c.o [ 9%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/horus/horus_l2.c.o [ 10%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/horus/horus_packet_v1.c.o [ 11%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/horus/horus_packet_v2.c.o [ 12%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/jtencode/lib/crc14.c.o [ 13%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/mfsk/mfsk.c.o [ 14%] Building C object src/CMakeFiles/RS41ng.elf.dir/codecs/morse/morse.c.o [ 16%] Building C object src/CMakeFiles/RS41ng.elf.dir/config.c.o [ 17%] Building C object src/CMakeFiles/RS41ng.elf.dir/drivers/bmp280/bmp280.c.o [ 18%] Building C object src/CMakeFiles/RS41ng.elf.dir/drivers/pulse_counter/pulse_counter.c.o [ 19%] Building C object src/CMakeFiles/RS41ng.elf.dir/drivers/si4032/si4032.c.o [ 20%] Building C object src/CMakeFiles/RS41ng.elf.dir/drivers/ubxg6010/ubxg6010.c.o [ 21%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/cmsis_boot/startup/startup_stm32f10x_md_vl.c.o [ 22%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/cmsis_boot/system_stm32f10x.c.o [ 24%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/datatimer.c.o [ 25%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/delay.c.o [ 26%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/i2c.c.o [ 27%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/pwm.c.o [ 28%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/spi.c.o [ 29%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/misc.c.o [ 31%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_adc.c.o [ 32%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_dma.c.o [ 33%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_exti.c.o [ 34%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_flash.c.o [ 35%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_gpio.c.o [ 36%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_i2c.c.o [ 37%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_pwr.c.o [ 39%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_rcc.c.o [ 40%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_spi.c.o [ 41%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_tim.c.o [ 42%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/stm_lib/src/stm32f10x_usart.c.o [ 43%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/system.c.o [ 44%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/usart_ext.c.o [ 45%] Building C object src/CMakeFiles/RS41ng.elf.dir/hal/usart_gps.c.o [ 47%] Building C object src/CMakeFiles/RS41ng.elf.dir/locator.c.o [ 48%] Building C object src/CMakeFiles/RS41ng.elf.dir/log.c.o [ 49%] Building C object src/CMakeFiles/RS41ng.elf.dir/main.c.o [ 50%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio.c.o [ 51%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_payload_aprs_position.c.o [ 52%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_payload_aprs_weather.c.o [ 54%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_payload_cw.c.o [ 55%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_payload_fsq.c.o [ 56%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_payload_horus_v1.c.o [ 57%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_payload_horus_v2.c.o [ 58%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_payload_jtencode.c.o [ 59%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_payload_wspr.c.o [ 60%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_si4032.c.o [ 62%] Building C object src/CMakeFiles/RS41ng.elf.dir/radio_si5351.c.o [ 63%] Building C object src/CMakeFiles/RS41ng.elf.dir/syscalls/semihosting.c.o [ 64%] Building C object src/CMakeFiles/RS41ng.elf.dir/syscalls/syscalls.c.o [ 65%] Building C object src/CMakeFiles/RS41ng.elf.dir/telemetry.c.o [ 66%] Building C object src/CMakeFiles/RS41ng.elf.dir/template.c.o [ 67%] Building C object src/CMakeFiles/RS41ng.elf.dir/utils.c.o [ 68%] Building CXX object src/CMakeFiles/RS41ng.elf.dir/codecs/jtencode/jtencode.cpp.o [ 70%] Building CXX object src/CMakeFiles/RS41ng.elf.dir/codecs/jtencode/lib/JTEncode.cpp.o [ 71%] Building CXX object src/CMakeFiles/RS41ng.elf.dir/codecs/jtencode/lib/encode_rs_int.cpp.o [ 72%] Building CXX object src/CMakeFiles/RS41ng.elf.dir/codecs/jtencode/lib/init_rs_int.cpp.o /home/mitch/RS41ng/src/codecs/jtencode/lib/init_rs_int.cpp: In member function 'void JTEncode::init_rs_int(int, int, int, int, int, int)': /home/mitch/RS41ng/src/codecs/jtencode/lib/init_rs_int.cpp:33:29: warning: comparison of integer expressions of different signedness: 'int' and 'unsigned int' [-Wsign-compare] 33 | if(symsize < 0 || symsize > 8sizeof(data_t)){ | ~~^~~~ [ 73%] Building CXX object src/CMakeFiles/RS41ng.elf.dir/drivers/si5351/si5351.cpp.o [ 74%] Building CXX object src/CMakeFiles/RS41ng.elf.dir/drivers/si5351fast/si5351mcu.cpp.o [ 75%] Building CXX object src/CMakeFiles/RS41ng.elf.dir/si5351_handler.cpp.o [ 77%] Building CXX object src/CMakeFiles/RS41ng.elf.dir/si5351_test.cpp.o [ 78%] Linking CXX executable RS41ng.elf Building /home/mitch/RS41ng/build/RS41ng.hex Building /home/mitch/RS41ng/build/RS41ng.bin text data bss dec hex filename 55340 1512 5152 62004 f234 RS41ng.elf [ 78%] Built target RS41ng.elf [ 79%] Building C object tests/CMakeFiles/RS41ng_top.dir/bell_test.c.o /home/mitch/RS41ng/tests/bell_test.c: In function ‘main2’: /home/mitch/RS41ng/tests/bell_test.c:16:34: warning: format argument 1 unused before used argument 4 in ‘$’-style format [-Wformat=] 16 | snprintf(test, sizeof(test), "%3$s %4$s %2$s\n", "1fd", gg, "3aa", "4ab"); | ^~~~~~ In file included from /home/mitch/RS41ng/src/gps.h:6, from /home/mitch/RS41ng/src/codecs/aprs/aprs_position.h:7, from /home/mitch/RS41ng/tests/bell_test.c:5: /home/mitch/RS41ng/src/config.h:189:22: warning: too many arguments for format [-Wformat-extra-args] 189 | #define APRS_COMMENT "RS41ng radiosonde firmware test" | ^~~~~~~~~ /home/mitch/RS41ng/src/config.h:189:22: note: in definition of macro ‘APRS_COMMENT’ 189 | #define APRS_COMMENT "RS41ng radiosonde firmware test" | ^~~~~~~~~ [ 80%] Building C object tests/CMakeFiles/RS41ng_top.dir/morse_test.c.o [ 81%] Building C object tests/CMakeFiles/RS41ng_top.dir/template_test.c.o [ 82%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/codecs/aprs/aprs.c.o [ 83%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/codecs/aprs/aprs_position.c.o [ 85%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/codecs/aprs/aprs_weather.c.o [ 86%] Building C object tests/CMakeFiles/RS41ng_top.dir/__/src/codecs/ax25/ax25.c.o [ 87%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/codecs/bell/bell.c.o [ 88%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/codecs/horus/horus_common.c.o [ 89%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/codecs/horus/horus_l2.c.o [ 90%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/codecs/horus/horus_packet_v1.c.o [ 91%] Building C object tests/CMakeFiles/RS41ng_top.dir/__/src/codecs/horus/horus_packet_v2.c.o [ 93%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/codecs/jtencode/lib/crc14.c.o [ 94%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/codecs/mfsk/mfsk.c.o [ 95%] Building C object tests/CMakeFiles/RS41ng_top.dir/__/src/codecs/morse/morse.c.o [ 96%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/config.c.o [ 97%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/template.c.o /home/mitch/RS41ng/src/template.c: In function ‘template_replace’: /home/mitch/RS41ng/src/template.c:16:5: warning: implicit declaration of function ‘strlcpy’; did you mean ‘strncpy’? [-Wimplicit-function-declaration] 16 | strlcpy(replacement, CALLSIGN, sizeof(replacement)); | ^~~ | strncpy [ 98%] Building C object tests/CMakeFiles/RS41ng_top.dir//src/utils.c.o [100%] Linking C executable RS41ng_top /usr/bin/ld: CMakeFiles/RS41ng_top.dir/template_test.c.o: in function main': template_test.c:(.text+0x7b): undefined reference tostrlcpy' /usr/bin/ld: CMakeFiles/RS41ng_top.dir//src/template.c.o: in function template_replace': template.c:(.text+0x68): undefined reference tostrlcpy' /usr/bin/ld: template.c:(.text+0x84): undefined reference to strlcpy' /usr/bin/ld: template.c:(.text+0xc7): undefined reference tostrlcpy' /usr/bin/ld: template.c:(.text+0xe3): undefined reference to `strlcpy' /usr/bin/ld: CMakeFiles/RS41ng_top.dir//src/template.c.o:template.c:(.text+0x126): more undefined references to `strlcpy' follow collect2: error: ld returned 1 exit status make[2]: [tests/CMakeFiles/RS41ng_top.dir/build.make:369: tests/RS41ng_top] Error 1 make[1]: [CMakeFiles/Makefile2:169: tests/CMakeFiles/RS41ng_top.dir/all] Error 2 make: *** [Makefile:91: all] Error 2

mikaelnousiainen commented 1 year ago

This is a known issue, but we don't have a solution. The actual firmware builds fine (you should have the ELF/BIN files built), but the test code doesn't.

You can either:

  1. Not care about the error, as the firmware is built
  2. Build using the Docker environment, as described here (please pull the latest changes that fix Docker compilation!): https://github.com/mikaelnousiainen/RS41ng/#building-the-firmware-with-docker
  3. Propose a solution -- maybe an alternate way of building (skip the tests by default) or have an alternative to strlcpy() ?