mmote.ru/content/posts/codeblocks-avr-linker-error/index.md

42 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Избавляемся от undefined reference to `__mulqi3' в Code::Blocks"
categories: ["cpp", "archive"]
date: 2016-11-29T00:00:00+03:00
draft: false
featured_image: miniature.jpg
---
Мне нравится Code::Blocks. Замечательная IDE, которая умеет всё. И вот сравнительно недавно начал использовать эту среду для написания программ для AVR. Всё шло замечательно, но стоило лишь использовать sprintf, программа перестала компилироваться, линковщик выдавал ошибку undefined reference to `__mulqi3'.<!--more-->
![|](cb_error.png)
После гуглений оказалось, что автонаходитель тулчейна работает немного некорректно. Что ж, идём исправлять. Открываем настройки компиляторов.
![|](cb_options.png)
Выбираем **GNU GCC Compiler for AVR**.
![|](cb_compilerselect.png)
Открываем вкладку Search **directories**, в ней вкладку **Linker**.
![|](cb_libset1.png)
И удаляем суффикс avr в пути.
Например,
было `d:\_compilers\avr8-gnu-toolchain\avr\lib`
стало `d:\_compilers\avr8-gnu-toolchain\lib`
![|](cb_libset.png)
![|](cb_libset2.png)
Те же манипуляции производим с вкладкой **Compiler**.
![|](cb_includeset.png)
Сохраняем и спокойно работаем дальше :)