We want to store the OTA AWS certificates into the flash of ESP32E board. We have used SPIFFS for that purpose in the main.c file of our project. For some reason, the linker does not find those functions. What could cause that issue? We checked that those functions are inside of libspiffs.a library file. Could this be a circular dependency issue and we should repeat some libraries at least twice on the linker command line?
Here are the linker error messages:
main.c: undefined reference to esp_spiffs_format' undefined reference to esp_vfs_spiffs_register’ control_flash.c: undefined reference to esp_spiffs_info' undefined reference to esp_vfs_spiffs_register’
[ 89%] Building C object esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/esp_spiffs.c.obj [ 89%] Building C object esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs_api.c.obj [ 89%] Building C object esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_cache.c.obj [ 89%] Building C object esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_check.c.obj [ 89%] Building C object esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_gc.c.obj [ 89%] Building C object esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_hydrogen.c.obj [ 90%] Building C object esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_nucleus.c.obj [ 90%] Linking C static library libspiffs.a [ 90%] Built target __idf_spiffs
Description of the circular dependency issue:
Circular Dependencies[]
It’s possible for a project to contain Component A that requires (REQUIRES or PRIV_REQUIRES) Component B, and Component B that requires Component A. This is known as a dependency cycle or a circular dependency.
CMake will usually handle circular dependencies automatically by repeating the component library names twice on the linker command line. However this strategy doesn’t always work, and the build may fail with a linker error about “Undefined reference to …”, referencing a symbol defined by one of the components inside the circular dependency. This is particularly likely if there is a large circular dependency, i.e., A > B > C > D > A.
Linker does not find functions from the libspiffs.a library file
Who is online
Users browsing this forum: No registered users and 91 guests