У меня при компиляции проекта на STM32 linker ошибки выдает. Например: " undefined reference to `GPIO_ResetBits'". Хотя в хедерах все прописано. Вопрос: это мне как-то в make-file нужно еще их прописать для линкера?

Комментарии: 11

  1. Max

    в хедерах мало что бы было. еще надо что бы компилился сишник в статическую библиотеку и во время линковки эта библиотека подхватывалась смотри логи компилятора. и там посмотри, как С-файл с нужной функцией компилиться - если в библиотеку, то нужно, что бы либа потом еще на вход линкеру попала. если С-файл не фигурирует в логах компилятора и линкера - нужно добавить его в команду компиляции, а после и библиотеку в команду линкеру. если у тебя весь ELF компилиться в одну команду (без отдельного вызова линкера тобишь), то достаточно будет просто добавить файл в эту команду

    • Edgar

      build\disco_f411ve\src\main.o: In function `main': main.c:(.text.startup.main+0x46): undefined reference to `GPIO_SetBits' вот такого добра пишен немеренно по всех файлах исходников

      • Max

        не те логи смотришь. смотри все логи. прям все. а если умеешь пользоваться grep - то юзай его с самого начала смотри как билд проходит

        • Edgar

          grep - это что? полное название какое?

          • Max

            как бэ дебаг надо начинать сверху а не снизу это и есть полное название. ты на линуксах?

            • Edgar

              нет, форточка

              • Max

                тогда ручками, или какие там средства фильтрации текста у вас на форточках есть

                • Edgar

                  у меня компиляция .о файлов проходит, только начинается линковка (Linking .pio\build\disco_f411ve\firmware.elf) - сразу сыпятся ошибки

                  • Max

                    вот в .o файлах нужный файл фигурирует?

                    • Edgar

                      теперь я понял о чем ты

                      • Max

                        еще раз перечитай месседж -> https://t.me/ru_electronics/130489 .o файл этот статическая либа ну, точнее, просто объектник. одна хрень. они потом должны скармливаться линкеру, иначе он будет ругаться. смотри внимательно, потому что порядок в котором файлы скармливаются линкеру может играть значение

Не нашли ответ?

Вам также может быть интересно