Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
mark1977
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 9
1

Как настроить Code::Blocks

20.09.2016, 21:52. Просмотров 2490. Ответов 21
Метки нет (Все метки)

Всем доброго времени суток. Опишу суть проблемы. Пишу под AVR микроконтроллеры фирмы Atmel. Скачал и установил среду разработки Code::Blocks 16.01. До этого пользовался редактором кода VSM Studio от Labcenter Electronics Ltd. Release 1.0. В качестве компилятора использую WinAVR версия 20100110. При попытке скомпилировать простенький код, работающий с EEPROM (используется стандартная библиотека WinAVR), получаем ошибку в Code::Blocks, однако тот же самый код без проблем компилится в среде VSM Studio. Данная проблема наблюдается у меня на разных машинах (win7 x64 и x86), однако у коллеги этот код прекрасно компилируется в Code::Blocks (установочники Code::Blocks и WinAVR те же самые).
Прошу помочь в решении данной проблемы, а именно в настройке Code::Blocks. Скрины прилагаю, возможно это поможет. Если нужно что-то еще - пишите, постараюсь предоставить информацию.
0
Миниатюры
Как настроить Code::Blocks   Как настроить Code::Blocks   Как настроить Code::Blocks  

Как настроить Code::Blocks   Как настроить Code::Blocks  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2016, 21:52
Ответы с готовыми решениями:

Как настроить Code::Blocks?
Ну я подключаю open gl в Code Blocks в include скинул headers файлы lib в lib...

Как настроить вывод ошибок в Code::Blocks?
У меня среда разработки КодБлок. Ошибки в консоли выводяться на тарабарщине....

Code::blocks не настроить работу для кросс компиляции
не получается настроить C::B для кросс компиляции. выдает ошибку. ...

Code::Blocks - подсвечивать классы, как в VS
Чтобы удобнее было работать, было б не плохо, если б классы подсвечивались как...

Как подключить к Code::Blocks сторонние библиотеки (например, SFML) и различные компиляторы?
Я пользуюсь Code Blocks, и мне дали задание вычислить точки и построить график....

21
GoshaM
84 / 79 / 32
Регистрация: 02.06.2016
Сообщений: 197
20.09.2016, 22:53 2
C Code::Blocks идет утилита Share Config она позволяет переносить настройки на другую машину.
0
mark1977
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 9
22.09.2016, 20:16  [ТС] 3
Завтра попробую...

Добавлено через 22 часа 27 минут
Перенос настроек ничего не дал.
0
mark1977
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 9
25.09.2016, 11:57  [ТС] 4
Неужели никто не сталкивался с такой проблемой? Предлагайте варианты решения которые, на ваш взгляд, могут помочь решить проблему. Буду пробовать и отписываться в этой теме.
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
26.09.2016, 07:46 5
Цитата Сообщение от mark1977 Посмотреть сообщение
Скрины прилагаю
Линкер не находит реализацию этих функций. Где находятся реализации?
1
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
26.09.2016, 10:33 6
Проект собрался. При таких настройках: выбрать создание проекта AVR, процессор atmega8.
1
Миниатюры
Как настроить Code::Blocks   Как настроить Code::Blocks  
mark1977
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 9
26.09.2016, 20:11  [ТС] 7
Проблема в том, что у коллеги проект тоже строится... CodeBlocks, WinAVR установлены из одних и тех же инсталляторов, по одним и тем же путям, но у него строится, а у меня - нет. Настройки переносил - не помогает...
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
26.09.2016, 23:42 8
Цитата Сообщение от mark1977 Посмотреть сообщение
но у него строится, а у меня - нет
Проект какой создаёшь?

Добавлено через 1 час 55 минут
Уважаемый, если хочешь разбираться, то давай разбираться, не тяни резину. И полный вывод компилятора (лог) покажи.
1
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
27.09.2016, 02:21 9
В Build options проекта (это если тип проекта не AVR). Если так сделать, то тоже ошибок нет.
1
Миниатюры
Как настроить Code::Blocks   Как настроить Code::Blocks  
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
27.09.2016, 02:31 10
Предположу, что если у тебя ошибку линкер выдаёт, то не сделано то, что у меня на втором скрине в 9-ом посте (должна совпадать с такой же опцией компилятора). Это всё относится к случаю, если проект не AVR создан. Если AVR, то все эти (и не только эти) опции автоматом прописываются в файле проекта.
1
mark1977
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 9
27.09.2016, 19:49  [ТС] 11
Благодарю за Вашу попытку помочь. Тип проекта AVR Projekt. Прилагаю лог компилятора и настройки которые вас интересовали.
0
Миниатюры
Как настроить Code::Blocks   Как настроить Code::Blocks  
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
28.09.2016, 08:31 12
Цитата Сообщение от mark1977 Посмотреть сообщение
Тип проекта AVR Projekt
При таком типе проекта, не нужно специально выставлять, в опциях сборки, эти опции:
Цитата Сообщение от nd2 Посмотреть сообщение
Это всё относится к случаю, если проект не AVR создан. Если AVR, то все эти (и не только эти) опции автоматом прописываются в файле проекта.
Ты видишь, что они по два раза в командной строке повторяются (хотя, у меня и так собирается)? Убери их и в опциях компилятора, и в опциях линкера, и выложи лог компилятора текстом, а не на скрине (сборку Debug и Release сделай). И, если можно, чаще заходи на форум, а не один раз в сутки (у тебя что, интернета нет? Или почта не работает?), эта тягомотина начинает надоедать.

Добавлено через 1 час 7 минут
Лучше создай новый AVR проект, только процессор выбери atmega8, остальное ничего не меняй, пусть будет по умолчанию, файлы никакие не убирай, опции, в проекте, никакие не выставляй, добавь в main.c код. Убери из общих настроек компилятора (это там где Settings - Compailer) все флаги, убери там же все дополнительные опции (если есть) компилятора и линкера. Сделай сборку Debug и Release, и выложи логи компилятора текстом.

WinAVR отсюда скачивал?
https://sourceforge.net/projects/winavr/files/WinAVR/20100110/
1
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
28.09.2016, 09:00 13
Если ничего не получится, попробуй мой проект собрать (прикрепил). Положи рядом с файлом проекта main.c, и открой файл проекта CodeBlocks-ом.
1
Вложения
Тип файла: rar AVR_T3.rar (769 байт, 1 просмотров)
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
28.09.2016, 09:35 14
Попробовал на Win7 x64, тоже без проблем собирается.
-------------- Build: Debug in AVR_Test (compiler: GNU GCC Compiler for AVR)---------------

avr-gcc.exe -Wall -mmcu=atmega8 -DF_CPU=8000000UL -g -IC:\WinAVR\avr\include -c main.c -o obj\Debug\main.o
avr-g++.exe -LC:\WinAVR\avr\lib -o bin\Debug\AVR_Test.elf obj\Debug\main.o -mmcu=atmega8
-Wl,-Map=bin\Debug\AVR_Test.map,--cref
Output file is bin\Debug\AVR_Test.elf with size 3.50 KB
Running project post-build steps
cmd /c "avr-objdump -h -S bin\Debug\AVR_Test.elf > bin\Debug\AVR_Test.lss"
avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex bin\Debug\AVR_Test.elf bin\Debug\AVR_Test.hex
avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex bin\Debug\AVR_Test.elf

bin\Debug\AVR_Test.eep
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
Если осталась ссылка откуда WinAVR скачивал, то выложи.
1
Миниатюры
Как настроить Code::Blocks  
mark1977
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 9
28.09.2016, 21:04  [ТС] 15
При таком типе проекта, не нужно специально выставлять, в опциях сборки, эти опции:
Пробовал и с опциями и без.
И, если можно, чаще заходи на форум, а не один раз в сутки (у тебя что, интернета нет? Или почта не работает?), эта тягомотина начинает надоедать.
Интернет у меня есть, но вот возможности заходить в течение дня нет - работа все-таки.
Лучше создай новый AVR проект, только процессор выбери atmega8, остальное ничего не меняй, пусть будет по умолчанию, файлы никакие не убирай, опции, в проекте, никакие не выставляй, добавь в main.c код. Убери из общих настроек компилятора (это там где Settings - Compailer) все флаги, убери там же все дополнительные опции (если есть) компилятора и линкера. Сделай сборку Debug и Release, и выложи логи компилятора текстом.
Точно так и сделал, никаких настроек не менял, собрал Release
лог:

-------------- Build: Release in TEst_eeprom_2 (compiler: GNU GCC Compiler for AVR)---------------

avr-gcc.exe -Wall -mmcu=atmega8 -DF_CPU=16000000UL -Os -IC:\WinAVR-20100110\avr\include -c fuse.c -o obj\Release\fuse.o
avr-gcc.exe -Wall -mmcu=atmega8 -DF_CPU=16000000UL -Os -IC:\WinAVR-20100110\avr\include -c main.c -o obj\Release\main.o
avr-g++.exe -LC:\WinAVR-20100110\avr\lib -o bin\Release\TEst_eeprom_2.elf obj\Release\fuse.o obj\Release\main.o -mmcu=atmega8 -Wl,-Map=bin\Release\TEst_eeprom_2.map,--cref
obj\Release\main.o: In function `main':
main.c:(.text+0x6): undefined reference to `__eewr_byte_m8'
main.c:(.text+0xe): undefined reference to `__eewr_byte_m8'
main.c:(.text+0x14): undefined reference to `__eerd_byte_m8'
main.c:(.text+0x1e): undefined reference to `__eerd_byte_m8'
Process terminated with status 1 (0 minute(s), 0 second(s))
4 error(s), 0 warning(s) (0 minute(s), 0 second(s))

и Debug

-------------- Clean: Debug in TEst_eeprom_2 (compiler: GNU GCC Compiler for AVR)---------------

Cleaned "TEst_eeprom_2 - Debug"

-------------- Build: Debug in TEst_eeprom_2 (compiler: GNU GCC Compiler for AVR)---------------

avr-gcc.exe -Wall -mmcu=atmega8 -DF_CPU=16000000UL -IC:\WinAVR-20100110\avr\include -c fuse.c -o obj\Debug\fuse.o
avr-gcc.exe -Wall -mmcu=atmega8 -DF_CPU=16000000UL -IC:\WinAVR-20100110\avr\include -c main.c -o obj\Debug\main.o
avr-g++.exe -LC:\WinAVR-20100110\avr\lib -o bin\Debug\TEst_eeprom_2.elf obj\Debug\fuse.o obj\Debug\main.o -mmcu=atmega8 -Wl,-Map=bin\Debug\TEst_eeprom_2.map,--cref
obj\Debug\main.o: In function `main':
main.c:(.text+0xe): undefined reference to `__eewr_byte_m8'
main.c:(.text+0x16): undefined reference to `__eewr_byte_m8'
main.c:(.text+0x1c): undefined reference to `__eerd_byte_m8'
main.c:(.text+0x26): undefined reference to `__eerd_byte_m8'
Process terminated with status 1 (0 minute(s), 2 second(s))
4 error(s), 0 warning(s) (0 minute(s), 2 second(s))

Если ничего не получится, попробуй мой проект собрать (прикрепил)
Результат закономерен - не собирается.

WinAVR отсюда скачивал?
https://sourceforge.net/projects/win...nAVR/20100110/
Очень похоже что оно и есть

P.S. Если внимательно почитать первый мой пост, то там написано:
однако тот же самый код без проблем компилится в среде VSM Studio.
Подразумевается что используется один и тот же компилятор...
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
28.09.2016, 22:28 16
Файл своего проекта (.cbp) выложи (в архиве), который:
Цитата Сообщение от mark1977 Посмотреть сообщение
Точно так и сделал, никаких настроек не менял
Попробую у себя собрать. Какая-нибудь другая версия WinAVR стояла до этого?
Цитата Сообщение от mark1977 Посмотреть сообщение
Интернет у меня есть, но вот возможности заходить в течение дня нет - работа все-таки.
Вечер есть для этого.

Добавлено через 5 минут
Цитата Сообщение от mark1977 Посмотреть сообщение
P.S. Если внимательно почитать первый мой пост, то там написано:
однако тот же самый код без проблем компилится в среде VSM Studio.
Подразумевается что используется один и тот же компилятор...
Кстати, у тебя там линкер используется avr-gcc.exe, а здесь avr-g++.exe. Попробуй поменять.

Добавлено через 34 минуты
Кажется, я нашёл из-за чего эта проблема, но нужно повозиться чтобы найти истинную причину.

Добавлено через 7 минут
Чуть позже отпишусь, что нужно сделать, чтобы собиралось.

Добавлено через 17 минут
Суть в следующем. В настройках компилятора для AVR, по умолчанию, стояли в Search directories: для компилятора: C:WinAVR/avr/include, для линкера: C:WinAVR/avr/lib, хотя, на самом деле, у меня WinAVR совсем в другом месте стоит. Тем не менее всё собиралось, и линкер, в частности, находил нужные либы, хотя писал, что ищет там, где их нет:
Цитата Сообщение от nd2 Посмотреть сообщение
avr-g++.exe -LC:\WinAVR\avr\lib
Как находил - неизвестно (может через переменные среды). Если же явно там прописать путь к либам: D:\Program Files (x86)\WinAVR\avr\lib (так у меня), то появляются ошибки линкера (как у тебя). Эти либы его не устраивают. А если указать путь к этим: D:\Program Files (x86)\WinAVR\lib, то собирает без ошибок. Что нужно сделать понял? Только проверь эти пути и в настройках проекта, и в настройках компилятора (где-то можно вообще убрать).

Добавлено через 10 минут
Т.е., у тебя должно быть, после исправлений, не так:
Цитата Сообщение от mark1977 Посмотреть сообщение
avr-g++.exe -LC:\WinAVR-20100110\avr\lib
, а так:
avr-g++.exe -LC:\WinAVR-20100110\lib
1
mark1977
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 9
29.09.2016, 20:53  [ТС] 17
Файл моего последнего проекта приложил.
Кстати, у тебя там линкер используется avr-gcc.exe, а здесь avr-g++.exe. Попробуй поменять.
В CodeBlocks менял - результат тот же самый - не компилится.
Т.е., у тебя должно быть, после исправлений, не так:

avr-g++.exe -LC:\WinAVR-20100110\avr\lib
, а так:
avr-g++.exe -LC:\WinAVR-20100110\lib
Не помогло... Перепробовал кучу вариантов. И в опциях проекта оставлял, и в опциях компилятора, а там и там...Изначально, кстати, в настройках проекта не было никаких доп. опций, которые, я так понял, должны были туда перейти после создания проекта. Самое странное что эта проблема проявилась только при работе с WinAVR-овской библиотекой для EEPROM...
На работе ребята тоже разводят руками. Видимо придется искать что-то другое, а пока посижу на VSM Studio.
0
Вложения
Тип файла: rar TEst_eeprom_2.rar (1.9 Кб, 1 просмотров)
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
29.09.2016, 21:57 18
Цитата Сообщение от mark1977 Посмотреть сообщение
Не помогло...
Это уже из мира фантастики, я не верю в чудеса в программировании. На 100% процентов уверен - причина именно в этом. Покажи лог вывода компилятора.

Добавлено через 1 минуту
Цитата Сообщение от mark1977 Посмотреть сообщение
Изначально, кстати, в настройках проекта не было никаких доп. опций, которые, я так понял, должны были туда перейти после создания проекта.
В настройках и не будет. Они все записываются в файл проекта: .cbp. Открой текстовым редактором этот файл и увидишь.

Добавлено через 1 минуту
Цитата Сообщение от mark1977 Посмотреть сообщение
Перепробовал кучу вариантов. И в опциях проекта оставлял, и в опциях компилятора, а там и там...
Я не вижу, что и как ты делаешь. Логи компилятора показывай. Что оставлял? Уточни. Речь не шла об опциях компилятора. Search directories имеешь ввиду, или что?
Можно попробовать вообще всё убрать из Search directories, у меня так тоже собирает, только не пишет, где ищет инклуды и либы.

Добавлено через 2 минуты
Цитата Сообщение от mark1977 Посмотреть сообщение
Файл моего последнего проекта приложил.
Это уже не нужно, с проектами там всё в порядке.

Добавлено через 47 секунд
Логи компилятора нужны.

Добавлено через 11 минут
Если хочешь, то могу к тебе подключиться (через TeamViewer), и посмотреть что там и как.

Добавлено через 7 минут
На вопрос не ответил:
Цитата Сообщение от nd2 Посмотреть сообщение
Какая-нибудь другая версия WinAVR стояла до этого?
1
mark1977
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 9
29.09.2016, 23:49  [ТС] 19
-------------- Clean: Debug in TEst_eeprom_2 (compiler: GNU GCC Compiler for AVR)---------------

Cleaned "TEst_eeprom_2 - Debug"

-------------- Build: Debug in TEst_eeprom_2 (compiler: GNU GCC Compiler for AVR)---------------

avr-gcc.exe -mmcu=atmega8 -Wall -DF_CPU=16000000UL -O2 -Wall -c fuse.c -o obj\Debug\fuse.o
avr-gcc.exe -mmcu=atmega8 -Wall -DF_CPU=16000000UL -O2 -Wall -c main.c -o obj\Debug\main.o
avr-g++.exe -o bin\Debug\TEst_eeprom_2.elf obj\Debug\fuse.o obj\Debug\main.o -mmcu=atmega8 -Wl,-Map=bin\Debug\TEst_eeprom_2.map,--cref
Output file is bin\Debug\TEst_eeprom_2.elf with size 2.50 KB
Running project post-build steps
cmd /c "avr-objdump -h -S bin\Debug\TEst_eeprom_2.elf > bin\Debug\TEst_eeprom_2.lss"
avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex bin\Debug\TEst_eeprom_2.elf bin\Debug\TEst_eeprom_2.hex
avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex bin\Debug\TEst_eeprom_2.elf bin\Debug\TEst_eeprom_2.eep
avr-objcopy --no-change-warnings -j .lock --change-section-lma .lock=0 -O ihex bin\Debug\TEst_eeprom_2.elf bin\Debug\TEst_eeprom_2.lock
avr-objcopy --no-change-warnings -j .signature --change-section-lma .signature=0 -O ihex bin\Debug\TEst_eeprom_2.elf bin\Debug\TEst_eeprom_2.sig
avr-objcopy --no-change-warnings -j .fuse --change-section-lma .fuse=0 -O ihex bin\Debug\TEst_eeprom_2.elf bin\Debug\TEst_eeprom_2.fuse
srec_cat bin\Debug\TEst_eeprom_2.fuse -Intel -crop 0x00 0x01 -offset 0x00 -O bin\Debug\TEst_eeprom_2.lfs -Intel
srec_cat bin\Debug\TEst_eeprom_2.fuse -Intel -crop 0x01 0x02 -offset -0x01 -O bin\Debug\TEst_eeprom_2.hfs -Intel
Process terminated with status 0 (0 minute(s), 2 second(s))
0 error(s), 0 warning(s) (0 minute(s), 2 second(s))


Алилуйя!!!
Удалил ко всем чертям все пути и поснимал все галочки в настройках проекта (Projekt -> Build Option) и в настройках компилятора. Проект не собрался, но ошибка была уже другая, а именно:
-------------- Clean: Debug in TEst_eeprom_2 (compiler: GNU GCC Compiler for AVR)---------------

Cleaned "TEst_eeprom_2 - Debug"

-------------- Build: Debug in TEst_eeprom_2 (compiler: GNU GCC Compiler for AVR)---------------

avr-gcc.exe -Wall -DF_CPU=16000000UL -O2 -Wall -c fuse.c -o obj\Debug\fuse.o
In file included from fuse.c:1:
c:/winavr-20100110/lib/gcc/../../avr/include/avr/io.h:404:6: warning: #warning "device type not defined"
fuse.c:3: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__fuse'
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 1 warning(s) (0 minute(s), 0 second(s))

и Warning (на скрине) не определено устройство.
После чего в настройках проекта (Projekt -> Build Option) выбрал целевой контроллер (atmega8) и вуаля.
Дальше буду постепенно возвращать настройки и посмотрю произойдет ли сбой и на каком этапе.

Спасибо что потратили на меня время и удачи на этом поприще.
0
Миниатюры
Как настроить Code::Blocks  
mark1977
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 9
30.09.2016, 00:01  [ТС] 20
Дополню малость... Вернув все как было изначально, как и ожидал, получил прежнюю проблему, которая самоликвидировалась когда очистил список путей для линкера (Settings -> Compiller... -> Search directories, вкладка Linker)

Решено. Тему можно закрывать.
0
30.09.2016, 00:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2016, 00:01

Как сделать, чтобы можно было писать нормально (на русском) в Code::Blocks?
как сделать так чтоб можно было писать нормально(на русском) в code block

Как убрать неполадки совместимости с Code::Blocks при установке этой IDE под Windows 7 ?
Как убрать неполадки совместимости с Code::Blocks.Запускаю установочник и...

Не запускается code::blocks
При запуске code::blocks на экране возникает следующее сообщение об ошибке....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru