After creating a new Ubuntu virtual machine to start fresh, I am still experiencing the issue below.
I re-installed the Connect SDK manually on the new virtual machine as instructed here (using v1.9.1). When I try to build the attached basic application ("west build -b nrf9160dk_nrf9160_ns"), I receive the error output below.
Just last week, I was including "CONFIG_CJSON_LIB=y" in my prj.conf and "#include <cJSON.c> #include <cJSON_os.h>" in my main.c and building without issue. Could you please help me resolve this duplicate functions issue?
Thanks.
-- west build: generating a build system
Including boilerplate (Zephyr base (cached)): /home/tombrown/ncs/v1.9.1/zephyr/cmake/app/boilerplate.cmake
-- Application: /home/tombrown/src/cjson_issue
-- Zephyr version: 2.7.99 (/home/tombrown/ncs/v1.9.1/zephyr), build: v2.7.99-ncs1-1
-- Found west (found suitable version "0.13.1", minimum required is "0.7.1")
-- Board: nrf9160dk_nrf9160_ns, Revision: 0.7.0
-- Cache files will be written to: /home/tombrown/.cache/zephyr
-- Found host-tools: zephyr 0.14.1 (/home/tombrown/zephyr-sdk-0.14.1)
-- Found dtc: /home/tombrown/zephyr-sdk-0.14.1/sysroots/x86_64-pokysdk-linux/usr/bin/dtc (found suitable version "1.6.0", minimum required is "1.4.6")
-- Found toolchain: zephyr 0.14.1 (/home/tombrown/zephyr-sdk-0.14.1)
-- Found BOARD.dts: /home/tombrown/ncs/v1.9.1/zephyr/boards/arm/nrf9160dk_nrf9160/nrf9160dk_nrf9160_ns.dts
-- Generated zephyr.dts: /home/tombrown/src/cjson_issue/build/zephyr/zephyr.dts
-- Generated devicetree_unfixed.h: /home/tombrown/src/cjson_issue/build/zephyr/include/generated/devicetree_unfixed.h
-- Generated device_extern.h: /home/tombrown/src/cjson_issue/build/zephyr/include/generated/device_extern.h
-- Including generated dts.cmake file: /home/tombrown/src/cjson_issue/build/zephyr/dts.cmake
warning: MQTT_KEEPALIVE (defined at subsys/net/lib/mqtt/Kconfig:20) was assigned the value '900' but
got the value ''. Check these unsatisfied dependencies: MQTT_LIB (=n). See
docs.zephyrproject.org/.../CONFIG_MQTT_KEEPALIVE.html and/or look up
MQTT_KEEPALIVE in the menuconfig/guiconfig interface. The Application Development Primer, Setting
Configuration Values, and Kconfig - Tips and Best Practices sections of the manual might be helpful
too.
Parsing /home/tombrown/ncs/v1.9.1/zephyr/Kconfig
Loaded configuration '/home/tombrown/ncs/v1.9.1/zephyr/boards/arm/nrf9160dk_nrf9160/nrf9160dk_nrf9160_ns_defconfig'
Merged configuration '/home/tombrown/src/cjson_issue/prj.conf'
Configuration saved to '/home/tombrown/src/cjson_issue/build/zephyr/.config'
Kconfig header saved to '/home/tombrown/src/cjson_issue/build/zephyr/include/generated/autoconf.h'
-- The C compiler identification is GNU 10.3.0
-- The CXX compiler identification is GNU 10.3.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/tombrown/zephyr-sdk-0.14.1/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
Changed board to secure nrf9160dk_nrf9160 (NOT NS)
=== child image spm - begin ===
loading initial cache file /home/tombrown/src/cjson_issue/build/spm/child_image_preload.cmake
Including boilerplate (Zephyr base): /home/tombrown/ncs/v1.9.1/zephyr/cmake/app/boilerplate.cmake
-- Application: /home/tombrown/ncs/v1.9.1/nrf/samples/spm
-- Zephyr version: 2.7.99 (/home/tombrown/ncs/v1.9.1/zephyr), build: v2.7.99-ncs1-1
-- Found Python3: /usr/bin/python3.8 (found suitable exact version "3.8.10") found components: Interpreter
-- Found west (found suitable version "0.13.1", minimum required is "0.7.1")
-- Board: nrf9160dk_nrf9160, Revision: 0.7.0
-- Cache files will be written to: /home/tombrown/.cache/zephyr
-- Found host-tools: zephyr 0.14.1 (/home/tombrown/zephyr-sdk-0.14.1)
-- Found dtc: /home/tombrown/zephyr-sdk-0.14.1/sysroots/x86_64-pokysdk-linux/usr/bin/dtc (found suitable version "1.6.0", minimum required is "1.4.6")
-- Found toolchain: zephyr 0.14.1 (/home/tombrown/zephyr-sdk-0.14.1)
-- Found BOARD.dts: /home/tombrown/ncs/v1.9.1/zephyr/boards/arm/nrf9160dk_nrf9160/nrf9160dk_nrf9160.dts
-- Found devicetree overlay: /home/tombrown/ncs/v1.9.1/nrf/samples/spm/nrf9160dk_nrf9160.overlay
-- Generated zephyr.dts: /home/tombrown/src/cjson_issue/build/spm/zephyr/zephyr.dts
-- Generated devicetree_unfixed.h: /home/tombrown/src/cjson_issue/build/spm/zephyr/include/generated/devicetree_unfixed.h
-- Generated device_extern.h: /home/tombrown/src/cjson_issue/build/spm/zephyr/include/generated/device_extern.h
-- Including generated dts.cmake file: /home/tombrown/src/cjson_issue/build/spm/zephyr/dts.cmake
Parsing /home/tombrown/ncs/v1.9.1/zephyr/Kconfig
Loaded configuration '/home/tombrown/ncs/v1.9.1/zephyr/boards/arm/nrf9160dk_nrf9160/nrf9160dk_nrf9160_defconfig'
Merged configuration '/home/tombrown/ncs/v1.9.1/nrf/samples/spm/prj.conf'
Merged configuration '/home/tombrown/ncs/v1.9.1/nrf/samples/spm/boards/nrf9160dk_nrf9160.conf'
Merged configuration '/home/tombrown/ncs/v1.9.1/nrf/subsys/partition_manager/partition_manager_enabled.conf'
Merged configuration '/home/tombrown/src/cjson_issue/build/spm/zephyr/misc/generated/extra_kconfig_options.conf'
Configuration saved to '/home/tombrown/src/cjson_issue/build/spm/zephyr/.config'
Kconfig header saved to '/home/tombrown/src/cjson_issue/build/spm/zephyr/include/generated/autoconf.h'
-- The C compiler identification is GNU 10.3.0
-- The CXX compiler identification is GNU 10.3.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/tombrown/zephyr-sdk-0.14.1/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
CMake Warning at /home/tombrown/ncs/v1.9.1/zephyr/CMakeLists.txt:1687 (message):
__ASSERT() statements are globally ENABLED
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tombrown/src/cjson_issue/build/spm
=== child image spm - end ===
CMake Warning at /home/tombrown/ncs/v1.9.1/zephyr/CMakeLists.txt:764 (message):
No SOURCES given to Zephyr library: subsys__net__pkt_filter
Excluding target from build.
Dropping partition 'nrf_modem_lib_trace' since its size is 0.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tombrown/src/cjson_issue/build
-- west build: building application
[1/194] Preparing syscall dependency handling
[6/194] Performing build step for 'spm_subimage'
[1/266] Preparing syscall dependency handling
[256/266] Linking C executable zephyr/zephyr_pre0.elf
[260/266] Linking C executable zephyr/zephyr_pre1.elf
[266/266] Linking C executable zephyr/zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 64 KB 64 KB 100.00%
SRAM: 12008 B 32 KB 36.65%
IDT_LIST: 0 GB 2 KB 0.00%
[183/194] Linking C executable zephyr/zephyr_pre0.elf
FAILED: zephyr/zephyr_pre0.elf zephyr/zephyr_pre0.map /home/tombrown/src/cjson_issue/build/zephyr/zephyr_pre0.map
: && ccache /home/tombrown/zephyr-sdk-0.14.1/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj -o zephyr/zephyr_pre0.elf zephyr/CMakeFiles/offsets.dir/./arch/arm/core/offsets/offsets.c.obj -fuse-ld=bfd -Wl,-T zephyr/linker_zephyr_pre0.cmd -Wl,-Map=/home/tombrown/src/cjson_issue/build/zephyr/zephyr_pre0.map -Wl,--whole-archive app/libapp.a zephyr/libzephyr.a zephyr/arch/common/libarch__common.a zephyr/arch/arch/arm/core/aarch32/libarch__arm__core__aarch32.a zephyr/arch/arch/arm/core/aarch32/cortex_m/libarch__arm__core__aarch32__cortex_m.a zephyr/arch/arch/arm/core/aarch32/cortex_m/cmse/libarch__arm__core__aarch32__cortex_m__cmse.a zephyr/arch/arch/arm/core/aarch32/mpu/libarch__arm__core__aarch32__mpu.a zephyr/lib/libc/newlib/liblib__libc__newlib.a zephyr/lib/posix/liblib__posix.a zephyr/soc/arm/common/cortex_m/libsoc__arm__common__cortex_m.a zephyr/boards/boards/arm/nrf9160dk_nrf9160_ns/libboards__arm__nrf9160dk_nrf9160.a zephyr/subsys/net/libsubsys__net.a zephyr/subsys/net/ip/libsubsys__net__ip.a zephyr/subsys/random/libsubsys__random.a zephyr/drivers/clock_control/libdrivers__clock_control.a zephyr/drivers/console/libdrivers__console.a zephyr/drivers/gpio/libdrivers__gpio.a zephyr/drivers/serial/libdrivers__serial.a zephyr/drivers/entropy/libdrivers__entropy.a zephyr/drivers/timer/libdrivers__timer.a modules/nrf/lib/nrf_modem_lib/lib..__nrf__lib__nrf_modem_lib.a modules/nrf/lib/dk_buttons_and_leds/lib..__nrf__lib__dk_buttons_and_leds.a modules/nrf/lib/at_monitor/lib..__nrf__lib__at_monitor.a modules/nrf/lib/at_host/lib..__nrf__lib__at_host.a modules/nrf/lib/fatal_error/lib..__nrf__lib__fatal_error.a modules/nrf/subsys/fw_info/lib..__nrf__subsys__fw_info.a modules/cjson/libcjson.a modules/hal_nordic/nrfx/libmodules__hal_nordic__nrfx.a /home/tombrown/ncs/v1.9.1/nrfxlib/nrf_modem/lib/cortex-m33/soft-float/libmodem.a -Wl,--no-whole-archive zephyr/kernel/libkernel.a -L"/home/tombrown/zephyr-sdk-0.14.1/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/thumb/v8-m.main/nofp" -L/home/tombrown/src/cjson_issue/build/zephyr -lgcc zephyr/arch/common/libisr_tables.a -no-pie -mcpu=cortex-m33 -mthumb -mabi=aapcs -mfp16-format=ieee -Wl,--gc-sections -Wl,--build-id=none -Wl,--sort-common=descending -Wl,--sort-section=alignment -Wl,-u,_OffsetAbsSyms -Wl,-u,_ConfigAbsSyms -nostdlib -static -Wl,-X -Wl,-N -Wl,--orphan-handling=warn spm/libspmsecureentries.a -lm -Wl,-lc -L"/home/tombrown/zephyr-sdk-0.14.1/arm-zephyr-eabi/arm-zephyr-eabi"/lib/thumb/v8-m.main/nofp -Wl,-lgcc -lc -specs=nano.specs && cd /home/tombrown/src/cjson_issue/build/zephyr && /usr/bin/cmake -E echo
/home/tombrown/zephyr-sdk-0.14.1/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: modules/cjson/libcjson.a(cJSON.c.obj): in function `cJSON_GetErrorPtr':
/home/tombrown/ncs/v1.9.1/modules/lib/cjson/cJSON.c:92: multiple definition of `cJSON_GetErrorPtr'; app/libapp.a(main.c.obj):/home/tombrown/ncs/v1.9.1/modules/lib/cjson/cJSON.c:92: first defined here
...(many more duplicated functions)
/home/tombrown/zephyr-sdk-0.14.1/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/10.3.0/../../../../arm-zephyr-eabi/bin/ld.bfd: modules/cjson/libcjson.a(cJSON.c.obj): in function `cJSON_ReplaceItemInObjectCaseSensitive':
/home/tombrown/ncs/v1.9.1/modules/lib/cjson/cJSON.c:2495: multiple definition of `cJSON_ReplaceItemInObjectCaseSensitive'; app/libapp.a(main.c.obj):/home/tombrown/ncs/v1.9.1/modules/lib/cjson/cJSON.c:2495: first defined here
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: /usr/bin/cmake --build /home/tombrown/src/cjson_issue/build
/* * Copyright (c) 2020 Nordic Semiconductor ASA * * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause */ #include <zephyr.h> #include <stdio.h> #include <stdlib.h> #include <cJSON.c> #include <cJSON_os.h> void main(void) { }
# # Copyright (c) 2020 Nordic Semiconductor # # SPDX-License-Identifier: LicenseRef-Nordic-5-Clause # cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(cjson_issue) # NORDIC SDK APP START target_sources(app PRIVATE src/main.c ) target_include_directories(app PRIVATE src) # NORDIC SDK APP END