Как сгенерировать файлы .a и .so для добавления в проект arduino
Я знаю, как создать библиотеку на arduino ide с исходными кодами, но я не могу отправить свой исходный код другим пользователям, которые хотят использовать мою библиотеку.
Поэтому мне нужно создать библиотеку с precompiled=true информацией в library.properties. И мне нужно поместить мои файлы .a и .so в src/{build.mcu} (в моем случае src/avr/mylib.a и mylib.so).
Но где же эти файлы (.a и .so)?!
Генерирует ли компилятор arduino эти файлы? Если да, то где? Если нет, то какой компилятор мне нужно использовать?
Я нашел файл .o в appData\local\Temp\arduino_build_XXXX\libraries\mylib\
Большое спасибо и извините за мой английский.
@Francisco Gomes, 👍-1
3 ответа
- Примечание. Я никогда не делал этого с Arduino IDE, поэтому не знаю, будет ли вам полезен полученный файл.
Файл .a
(вам не нужен файл .so
— это общая библиотека, которая не имеет смысла на платформе без ОС) — это просто архив (в частности, архив ar
), который содержит один или несколько файлов .o.
Создать его достаточно просто, используя:
avr-ar rcs myLib.a myLib.o
Вы найдете программу avr-ar
в программе установки инструментов в вашей Arduino IDE.
Кроме того, UECIDE (который я написал) использует подобные библиотечные файлы для кэширования своих библиотек и другого скомпилированного кода. Вы можете использовать UECIDE, чтобы напрямую получить файл .a для вашей библиотеки, который вы найдете в папке cache
папки данных UECIDE (найдите его через меню «Справка» -> «Отладка»).
Спасибо, Маженко!
Но для меня программа не avr-ar, я использую avr-gcc-ar.
После этого я должен поставить точку_a_linkage=true в своей библиотеке.свойства и вручную добавить mylib.a в AppData\Local\Temp\arduino_build_115676\libraries\mylib\
Не знаю почему, но это мне помогло.
Я надеюсь помочь другим.
С уважением.
[библиотека] = имя библиотеки
1) отредактируйте файл [library] library.properties и добавьте точку_a_linkage=true в конец ... (/home/name/Arduino/libraries/[library]/library.properties)
2) построить пример...
3) После завершения сборки перейдите в папку сборки (в Linux она находится в папке /tmp/arduino_build_xxxxxx), затем скопируйте файл dot_a из папки библиотеки (libraries/[library].a) в библиотеку arduino. папка для библиотеки [library] (/home/name/Arduino/libraries/[library]/src/esp8266/lib[library].a)
4) снова отредактируйте файл библиотеки [library] library.properties и удалите точку_a_linkage=true и добавьте precompiled=true и ldflags=-l[library] в конец файла...
5) создайте пример... на этот раз он ссылается на файл dot_a...
- Arduino PID для маятника пропеллера для горизонтальной балансировки
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
- Использование библиотеки Arduino fix_fft или arduinoFFT для фильтрации определенного звука?
- Проблемы со скоростью шагового двигателя Nema 17
- Помогите исправить эту ошибку: expected unqualified-id before 'if'|Arduino
- Запуск кода кодировщика одновременно с другим кодом в Arduino
- Балансировка маятника с использованием PID
- Операторы If и while не работают