У меня есть предварительно скомпилированная библиотека (расширение .a), которую я хочу использовать, интегрированная в примеры RTOS SDK ESP8266.
Существует папка по следующему пути (ESP8266_RTOS_SDK \ components \ esp8266 \ lib), где есть 22 файла .a внутри. Я положил туда свою библиотеку, но компилятор как бы не распознает функции моей библиотеки.
Я прочитал кое-что о редактировании некоторых make-файлов. Должен ли я действительно сделать это? Если да, я хотел бы знать, какой файл редактировать? (по какому пути он находится)
РЕДАКТИРОВАТЬ
Это моя рабочая папка:
![enter image description here](https://i.stack.imgur.com/V3wwq.png)
Espressif (разработчик ESP8266) ориентировал меня на то, как показано ниже на component.mk , но это не работает, компиляция продолжает показывать «неопределенную ссылку» для функция библиотеки.
![enter image description here](https://i.stack.imgur.com/VANPz.png)
Затем я создал переменную окружения COMPONENT_PATH для Windows, путь которого такой же, как показано в первом изображение.
![enter image description here](https://i.stack.imgur.com/cmIva.png)
Что-то не так с этим?
РЕДАКТИРОВАТЬ 2
Созданная папка "include" внутри main:
![enter image description here](https://i.stack.imgur.com/d0a3C.png)
Добавлена поверх C код: # include "include / lib123.h" , которая содержит только одну строку: int sum (int a, int b);
Добавлено на основной вызов: int result = sum (1,2);
Получена ошибка компилятора: неопределенная ссылка на 'sum'
* 105 9 * РЕДАКТИРОВАТЬ 3
Для каждой попытки компиляции следующий файл обновляется в папке \ esp \ tcp_server \ build.
Я не буду размещать здесь напрямую, потому что файл имеет больше чем 10.000 строк: https://raw.githubusercontent.com/jefersonpehls/esp8266_freeRTOS_firebase/master/tcp_server.map
EDIT4
Когда я пытаюсь сделать, это то, что показано:
make
Toolchain path: /opt/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc
Toolchain version: crosstool-ng-1.22.0-100-ge567ec7b
Compiler version: 5.2.0
Python requirements from C:/msys32/home/sandr/esp/ESP8266_RTOS_SDK/requirements.txt are satisfied.
LD build/tcp_server.elf
C:/msys32/home/sandr/esp/tcp_server/build/main\libmain.a(tcp_server_v5.o):(.literal.app_main+0x24): undefined reference to `sum'
C:/msys32/home/sandr/esp/tcp_server/build/main\libmain.a(tcp_server_v5.o): In function `app_main':
C:/msys32/home/sandr/esp/tcp_server/main/tcp_server_v5.c:382: undefined reference to `sum'
collect2.exe: error: ld returned 1 exit status
make: *** [C:\msys32\home\sandr\esp\ESP8266_RTOS_SDK/make/project.mk:510: /home/sandr/esp/tcp_server/build/tcp_server.elf] Error 1
РЕДАКТИРОВАТЬ 5
Вот полные шаги, которые я использую, чтобы сделать
sandr@DESKTOP-MA6RTB6 MINGW32 ~
$ cd ~/esp/tcp_server
sandr@DESKTOP-MA6RTB6 MINGW32 ~/esp/tcp_server
$ export PATH="$PATH:/opt/xtensa-lx106-elf/bin"
sandr@DESKTOP-MA6RTB6 MINGW32 ~/esp/tcp_server
$ make
Toolchain path: /opt/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc
Toolchain version: crosstool-ng-1.22.0-100-ge567ec7b
Compiler version: 5.2.0
Python requirements from C:/msys32/home/sandr/esp/ESP8266_RTOS_SDK/requirements.txt are satisfied.
LD build/tcp_server.elf
C:/msys32/home/sandr/esp/tcp_server/build/main\libmain.a(tcp_server_v5.o):(.literal.app_main+0x24): undefined reference to `sum'
C:/msys32/home/sandr/esp/tcp_server/build/main\libmain.a(tcp_server_v5.o): In function `app_main':
C:/msys32/home/sandr/esp/tcp_server/main/tcp_server_v5.c:382: undefined reference to `sum'
collect2.exe: error: ld returned 1 exit status
make: *** [C:\msys32\home\sandr\esp\ESP8266_RTOS_SDK/make/project.mk:510: /home/sandr/esp/tcp_server/build/tcp_server.elf] Error 1
РЕДАКТИРОВАТЬ 6
Это это содержимое esp \ tcp_server \ Makefile
#
# This is a project Makefile. It is assumed the directory this Makefile resides in is a
# project subdirectory.
#
PROJECT_NAME := tcp_server
EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
include $(IDF_PATH)/make/project.mk
Это содержимое esp \ tcp_server \ main \ component.mk
#
# "main" pseudo-component makefile.
#
# (Uses default behaviour of compiling all source files
# in directory, adding 'include' to include path.)
COMPONENT_ADD_INCLUDEDIRS := include
COMPONENT_ADD_LDFLAGS += $(COMPONENT_PATH)/lib123.a
, а IDF_PATH равно C: \ msys32 \ home \ sandr \ esp \ ESP8266_RTOS_SDK
РЕДАКТИРОВАТЬ 7
Это $ (IDF_PATH) /make/project.mk
https://github.com/jefersonpehls/esp8266_freeRTOS_firebase/blob/master/project.mk