|
Code::Blocks -> How To, Как бы начать... |
|
|
|
Jul 28 2008, 08:06
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
В общем-то всем хорош эклипс, окромя одного: задумчивый слишком. На моём Sempron 2800 как-то прямо напрягает уже. Я уж молчу про старенькие атлончики с 256М памяти... В общем, увидел упоминание на форуме о сабже, решил попробовать. Первое впечатление - положительное (это размер дистриба 10М и список из пары десятков компиляторов при запуске, среди которых и GCC for MSP430). Дальше впечатление немного попортилось. Подключение проекта - нудное пофайловое перетаскивание. (в клипсе можно прямо драг&дропом кидать, очень удобный импорт). Но это мелочи. Попытался скомпилить - вот что выдаёт: "X3_amplifier - Release" uses an invalid compiler. Skipping... Nothing to be done. То есть, MSP430 GCC выбрать можно, но он инвалид. Ну и, делать нечего. Хотя я там честно галочки расставил, ключи компилятора, даже MSP430x149 выбрал...
Хотя я конечно глубоко не вникал, может конечно инструкцию почитать... В общем, как скомпилить MSP-шную программу? Начиная с настроек проекта.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 28 2008, 09:38
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Вот нашёл на ихнем форуме: Код we have started to integrate the msp430 toolchain in Codeblocks. Our compiler plugin already supports MSP430 but it has not been released until now. The main reason why it has not been released is that we tested the MSP430 Toolchain with the sourceforge binaries. The binaries are generated using cygwin and that can cause some problems under windows. So we will generate the whole MSP430 Toolchain using mingw. As soon the toolchain is available and tested we will send the modification to the CB community. Насколько я понял, они поддержку MSP430 реализовали в версии под MinGW. То есть я так понимаю, надо ставить MinGW, потом С::В под него, а потом пробовать?
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 29 2008, 04:24
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Короче, дома на свежую голову под бутылочку пивка разобрался. Оказывается, даже проще намного, чем в эклипсе. Есть такая менюха Settings->Compiler and Debugger. Вот там надо прописать все пути до компиляторов. По умолчанию там забиты стандартные пути, но они могут и не совпадать. Например, у меня WinAVR стоит в папке С:\WinAVR-20080512, а там забито просто С:\WinAVR. Для мсп телодвижений побольше, поскольку визарда нет, приходится всё ручками расставлять. Но достаточно один раз настроить и забыть. В общем, эклипс может где-то и красивше, но тут как-то всё проще и понятнее. Да и не тормозит вообще. А клипсу каспер вообще рутшеллом считал поначалу, пришлось объяснить, что он не прав. Думаю, что и дебаггер настроить не составит труда. Только он мне не нужен, как-то привык уже, даже JTAG обычно не выводим, оставляем неподключенные ноги.
Короче, будет время - может кикстарт-мануал напишу. если кому надо. Ещё вот думаю, визард для МСП надо написать, если готового не найду. А с мэйкфайлом-то и ежу понятно, что всё заработает. Единственное - путь до маке.ехе должен в системе быть прописан
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 29 2008, 04:44
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(ukpyr @ Jul 28 2008, 14:15)  я пробовал все эти IDE - dev-cpp, codeblocks, eclipse, пришел к выводу что все это не нужно и избыточно. достаточно простейшего редактора.... Все это здорово, но без автодополнения, помощи по аргументам функций, быстрой навигации к определению\объявлению функции\класса\переменной я уже как то жизни себе и не представляю  Цитата На моём Sempron 2800 как-то прямо напрягает уже. У меня на рабочем пень4 3200 и 1 гб оперативы вполне прилично работает. Что касается 256 мб озу - так проще докупить, имхо, она сейчас дешевая. Что касается кодеблока - штука конечно симпатичная, но с автодополнением на С++ коде у меня были грабли. После чего я его забросил.
|
|
|
|
|
Jul 29 2008, 05:09
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Непомнящий Евгений @ Jul 29 2008, 08:44)  У меня на рабочем пень4 3200 и 1 гб оперативы вполне прилично работает. Что касается 256 мб озу - так проще докупить, имхо, она сейчас дешевая. К минимализьму надо стремиться! Сисадмин нас вообще хотел на терминалы пересадить, еле отбрыкались. Пока. Да и например, тот же VS у меня просто терпения не хватило поставить до конца. То ему сервиспак третий подавай, то ещё чего... А в результате пишешь приложение размером 50кБ, для работы которого пользователь должен установить какие-то фреймворки и прочую лабуду... А С::В для программирования контроллеров - имхо - самое то. Ничего лишнего, и вроде всё что нужно есть. А те же подсказки в эклипсе то работают, то нет, то парсеры включены, то вдруг галки опадают... Системы я так и не обнаружил. А вот тормоза конкретные. Была идея ещё накрайняк программерс ноутпадом воспользоваться из WinAVR, но вот он как раз какой-то убогий.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 29 2008, 07:25
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(MrYuran @ Jul 29 2008, 11:14)  Сисадмин несёт уголовную ответственность за ломаный софт, стоящий на подотчётных ему тачках. А он её нести не хочет. Ну так не надо ставить ломанный софт, да и все  . И кстати, у нас по фирме был какой-то приказ, в соответствии с которым ответственность за свой компьютер несет его пользователь... Цитата Щас увидел - подсказки в С::В тоже работают, как и в эклипсе. И это не может не радовать, тем более что работает всё намного быстрее. И дистриб 10 метров, а не 100 Работают, но не всегда. Особенно на всяких классах\шаблонах. Отладка там тоже какая-то недоделанная (хотя может я в ней не разобрался до конца просто). Эклипс конечно монстрообразнее и тормознутее, но возможностей у него все же побольше.
|
|
|
|
|
Jul 29 2008, 07:46
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(MrYuran @ Jul 29 2008, 11:36)  Кстати, даже по сравнению с ИАРом С::В мне нравится больше Дык иар и c::b - это несколько разные вещи  . иар = компилер (хороший) + иде (угребищная). Вместо иар-овской иде давно юзаю эклипс, а в качестве компилятора продолжаю юзать иар. С::b также безусловно лучше иар-овской иде. А вот что юзать вместе с ним в качестве компилятора - тут уже свобода выбора. Цитата Приказ не отменяет законов РФ, по которым ответственность ложится также на сисадмина и директора Интересно, зачем же тогда приказ делали? Чтобы юзера не расслаблялись  ?
|
|
|
|
|
Jul 29 2008, 10:00
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Код msp430-gcc.exe -mmcu=msp430x149 -c AD7708\AD7708.c -o E:\work\Программы\X3_amp\X3_amplifier\.objs\AD7708\AD7708.o msp430-ld.exe -o .elf E:\work\Программы\X3_amp\X3_amplifier\.objs\AD7708\AD7708.o -lm -lc Output size is 1.25 KB Process terminated with status 0 (0 minutes, 2 seconds) 0 errors, 0 warnings Вот она, квинтэссенция! мелочь конечно, проект типа ХеллоВорлд, но всё равно приятно. КСТАТИ: в мэйках обычно ставят LD = msp430-gcc.exe, а разница в чём? почему не ld ?
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 29 2008, 10:33
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(klen @ Jul 29 2008, 18:12)  это не к CB интерес увеличивается, а к другим IDE уменьшается.. Eclispse ДО жути достал А как же профессиональный MultiEdit и др.? Цитата(klen @ Jul 29 2008, 18:12)  Я никак не пойму КАК МОЖНО ПИСАТЬ IDE для людей и навязывая им невозможность создавать ПРОСТО ПРОЕКТ управляймый make или scons??? Согласен. В отношении CB. Но напрягает не сильно. Есть возможность все поправить после создания проекта. Цитата(klen @ Jul 29 2008, 18:12)  А тенденция.. "на тебе, тупой программер, визард который только в нашем формате сделает тебе проект!!!" зла не хватет!  И куда катиться цивилизация?
--------------------
Выбор.
|
|
|
|
|
Aug 8 2008, 13:22
|
Частый гость
 
Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416

|
Цитата Так, а зачем все эти мороки с визардом? Проект непереносимым получается: каталог с проектом просто так не перекинешь на др. ком, где нет C::B, но есть winavrя Всё очень легко переносится. На самом деле в C::B используется тот же avr-gcc (если в контексте про winavr), тот же makefile. Проект можно создавать либо через визард, либо как консольный. В любом случае всегда можно поменять структуру проекта. Есть ещё и третий варинт - написать свой визард (благо есть встроенные средства для этого). Цитата А тенденция.. "на тебе, тупой программер, визард который только в нашем формате сделает тебе проект!!!" зла не хватет! Совсем не так. Без обид, но такие мысли появляются только вследствии недостаточных познаний в вопросе. Подробнее я уже выше написал. Практически в любой иде файл проекта - это только для самой иде, главными же по прежнему являются файлы с расширениями *c, *cpp, *h. Перекомпоновать проект есть возможность в любой иде (через этот самый файл проекта), другой вопрос - зачем это нужно)))) Если я сижу в одной иде, то зачем мне её переносить в другую? А по сажу хочу сказать, что C::B одна из самых приятных вещей, с которой когда либо сталкивался. Единственное что меня останавливает для полного перехода на неё - это весьма скромные познания GNU-GCC (и avr-gcc в частности) и GNU-DGB (вроде правильно написал, в общем это гнушный отладчик). Да и просто саму среду вдоль и поперёк всё времени не хватает избегать. А так среда ну просто изуительная)))
|
|
|
|
|
Aug 8 2008, 15:53
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(UniBomb @ Aug 8 2008, 19:22)  Да и просто саму среду вдоль и поперёк всё времени не хватает избегать. А так среда ну просто изуительная))) Познакомитесь поближе - появятся сомнения  Среда заточена под PC, и никакие плагины этого пока не могут изменить, ибо это в мозгах разработчиков. Гляньте вот на этот показательный топик на их сайте. И подводящая итог цитата оттуда: Цитата This annoying behaviour bothers me for at least two years now. And it doesn't seem to be fixed in the future, that is really frustrating. And then there are these PC software gurus that don't stop to tell you that it works fine, when they hit the stop button. But none of them has even tried to debug a remote target.
This little neat "Bug" or missing feature makes codeblocks still unusable for embedded devlopement.
Btw. the arm-elf-insight debugger works fine, and the stop button really stops the target as expected.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 8 2008, 21:24
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(UniBomb @ Aug 9 2008, 01:10)  Ну как тебе сказать - программирую же в программерс нотпаде. По сути то и нужны только текстовый редактор, да утилитка make.exe. Когда говорят "изумительная среда", обычно имеют в виду немного большее, чем просто текстовый редактор. Цитата(UniBomb @ Aug 9 2008, 01:10)  В c::b можно удобнее работать непосредсвенно с кодом. Ну да, иногда нехватает дизасемблера удобного, просмотрщика памяти и регистров, но и без этого в принципе можно обойтись. Ну в крайнем случае отдебажить в АврСтудии. Да и потом я же не только для аврок пишу программы - и для PC))) Короче, c::b Вы и не пользуетесь особо, а просто видели пару раз, так?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 9 2008, 06:52
|
Участник

Группа: Новичок
Сообщений: 28
Регистрация: 7-11-06
Пользователь №: 22 038

|
Цитата(klen @ Jul 29 2008, 12:12)  это не к CB интерес увеличивается, а к другим IDE уменьшается.. Eclispse ДО жути достал своей явой и мехом вовнутрь вывернутым интерфейсом. Однако он умеет делать все. никак не соскочю с него.
Я никак не пойму КАК МОЖНО ПИСАТЬ IDE для людей и навязывая им невозможность создавать ПРОСТО ПРОЕКТ управляймый make или scons??? А тенденция.. "на тебе, тупой программер, визард который только в нашем формате сделает тебе проект!!!" зла не хватет! Однако, каким же бывает "красивым" Eclipse :
|
|
|
|
|
Aug 9 2008, 21:52
|
Частый гость
 
Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416

|
Цитата Когда говорят "изумительная среда", обычно имеют в виду немного большее, чем просто текстовый редактор. Когда так говорят, обычно имеют в виду немного большее чем можно ожидать от среды)) Я не ожидал множества наворотов конкретно в отношении программирования аврок, но вот во всём остальном меня более чем устраивает. Цитата Короче, c::b Вы и не пользуетесь особо, а просто видели пару раз, так? Нет, не так. Всё что связано с программированием под виньдовс происходит у меня в среде c::b. Ну или почти всё))) Учусь я ещё просто)))
|
|
|
|
|
Aug 10 2008, 05:09
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(UniBomb @ Aug 8 2008, 17:22)  Есть ещё и третий варинт - написать свой визард (благо есть встроенные средства для этого). Можно поподробнее? Что за встроенные средства? Начал тут колупать визард AVR на предмет переделки в MSP430, общая идеология понятна, но вручную как-то мутно... Кстати о птичках: может, у кого готовый есть?
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Aug 11 2008, 07:34
|
Частый гость
 
Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416

|
Цитата(MrYuran @ Aug 10 2008, 09:09)  Можно поподробнее? Что за встроенные средства? Как правильно заметил AHTOXA спецом по c::b я не являюсь  посему ответ будет краток: Create new project -> code::blocks plugin -> next -> "plugin type" : Wizard -> и так далее. Правда нужен ещё и установленный wxWidgets
|
|
|
|
|
Sep 7 2008, 11:58
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(haker_fox @ Jul 29 2008, 03:21)  С Wizard'ом у меня тоже не получилось, когда ради интереса решил недавно попробывать  Ранее (с 2006 г) и по ныне создаю "Console Application", а все правила компиляции задаю через makefile. Естественно CodeBlock'у нужно указать, что мы используем наш собственный makefile. Все отлично работает. Очень странно, я сейчас только что попробовал с визардом для AVR под CodeBlocks 8.02 и оно и компилит и по JTAGу отлаживает  Что я делаю не так?  Или я что-то недопонял и какая-то функциональность отсутствует? ЗЫ использую avarice Только пока не совсем понятно а как же с помощью GDB смотреть значения регистров?..
--------------------
|
|
|
|
|
Sep 7 2008, 23:20
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(AVR @ Sep 7 2008, 20:58)  Очень странно, я сейчас только что попробовал с визардом для AVR под CodeBlocks 8.02 и оно и компилит и по JTAGу отлаживает  Что я делаю не так?  Я не спорю, что работает. Просто у меня не заработало с первого раза для AVR, ну я и не стал мучаться. Тем более уже была привычка, о которой я рассказал выше. Цитата(AVR @ Sep 7 2008, 20:58)  Или я что-то недопонял и какая-то функциональность отсутствует? Нет, все верно поняли: были ошибки с созданием проекта. Цитата(AVR @ Sep 7 2008, 20:58)  ЗЫ использую avarice Только пока не совсем понятно а как же с помощью GDB смотреть значения регистров?.. Вот тут уже помочь не могу, хоть и GCC использую, отлаживаюсь через RS-232.
--------------------
Выбор.
|
|
|
|
|
Oct 3 2008, 05:52
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Григорий2000 @ Oct 3 2008, 09:23)  Может не в тему... Уважаемые, кто знаком с вопросом, дайте резюме по поводу всплывающих подсказок элементов классов и структур, можно их увидеть или нет.
Так устроит? По-моему, вполне нормально. И намного быстрее работает, чем в эклипсе. Правда, не всплывают как в клипсе окошки с объявлением переменных и функций. Да, в общем-то, не особо и надо
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Oct 3 2008, 06:08
|
Частый гость
 
Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210

|
Цитата(MrYuran @ Oct 3 2008, 09:52) 
Так устроит? По-моему, вполне нормально. И намного быстрее работает, чем в эклипсе. Правда, не всплывают как в клипсе окошки с объявлением переменных и функций. Да, в общем-то, не особо и надо Да вполне бы устроило, но почему-то неработает. у меня сейчас проет не С++ а просто С и в типах структур определенных typedef struct... не видит видимо среда эти элементы... может я непонимаю как среде их понятно показать... или это в достаточно свежих билдах реализовано... у меня от 27 февраля с.г. (8.02) проясните.. будте любезны))
|
|
|
|
|
Oct 3 2008, 06:45
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Григорий2000 @ Oct 3 2008, 10:35)  Еще раз скажите у вас это класс или структура? если структура - как определена? проект cpp? Проект с (без плюсов) структура, определена в заголовочном файле, который инклудится сверху. Подсказки начинают всплывать после сборки проекта Подсказки выплывают ко всем переменным, константам, в том числе и enum-ным, функциям и т.д.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Oct 6 2008, 06:46
|
Частый гость
 
Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210

|
Прогресс конечно имеется.. но в использовании в таком виде речи нет: при запрещении SmartSense - появляется ниспадающее меню с вариантами имен, но все что есть в проекте и все сразу и глобальные (можно отключить) и внешние(то-же можно отключить). Я конечно разберусь - вопрос времени.... Видимо есть некоторое недопонимание с средой и тем как она работает. ну и не быстрое чтение на "англицком" то-же дает о себе знать... Если возможно возмите проект и поместите например в корень какого нить диска(что-бы не учитывались настройки среды для вашего рабочего каталога ) и сообщите результат. работает ли в таком виде..
|
|
|
|
|
Nov 26 2008, 07:38
|
Частый гость
 
Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210

|
варнинги вывел... появились предупреждения о коментах типа с++ в файлах С90 и т.п компиляция проходит, хедеры все доступны, файлы для чистоты эксперимента свалил в одну папку. не вижу что-бы линкеру передавались все файлы проекта, передается только один(как нибудь можно вывести в консоль запуск линкера с ключами, что-бы посмотреть как это делает среда?) и естественно если он один у линкера - ошибки - нет обьектов объявленных там как extern или внешних функций. Цитата Compiling: ..\Lib\DELAY.C Compiling: ..\Lib\buffer.c ..\Lib\buffer.c:2:1: warning: C++ style comments are not allowed in ISO C90 ..\Lib\buffer.c:2:1: warning: (this will be reported only once per input file) In file included from ..\Lib\buffer.c:18: ..\Lib\/buffer.h:2:1: warning: C++ style comments are not allowed in ISO C90 ..\Lib\/buffer.h:2:1: warning: (this will be reported only once per input file) In file included from ..\Lib\buffer.c:21: ..\Lib\/avrlibdefs.h:2:1: warning: C++ style comments are not allowed in ISO C90 ..\Lib\/avrlibdefs.h:2:1: warning: (this will be reported only once per input file) ..\Lib\buffer.c: In function 'bufferGetAtIndex': ..\Lib\buffer.c:101: warning: ISO C90 forbids mixed declarations and code ..\Lib\buffer.c: In function 'bufferIsNotFull': ..\Lib\buffer.c:135: warning: ISO C90 forbids mixed declarations and code Compiling: ..\Lib\ds18b20.c ..\Lib\ds18b20.c:3:1: warning: C++ style comments are not allowed in ISO C90 ..\Lib\ds18b20.c:3:1: warning: (this will be reported only once per input file) In file included from ..\Lib\ds18b20.c:5: ..\Lib\/..\Lib\1WIRE.H:7:25: warning: C++ style comments are not allowed in ISO C90 ..\Lib\/..\Lib\1WIRE.H:7:25: warning: (this will be reported only once per input file) In file included from ..\Lib\ds18b20.c:6: ..\Lib\/ds18b20.h:11:1: warning: C++ style comments are not allowed in ISO C90 ..\Lib\/ds18b20.h:11:1: warning: (this will be reported only once per input file) Compiling: main.c In file included from main.c:6: ..\Lib\ds18b20.h:11:1: warning: C++ style comments are not allowed in ISO C90 ..\Lib\ds18b20.h:11:1: warning: (this will be reported only once per input file) main.c:14:1: warning: C++ style comments are not allowed in ISO C90 main.c:14:1: warning: (this will be reported only once per input file) Compiling: ..\Lib\1WIRE.C Linking console executable: bin\Debug\testProject.elf obj\Debug\Lib\ds18b20.o: In function `ds18b20Init': C:\work\TestFolder\testProject/..\Lib\ds18b20.c:91: undefined reference to `w1_rom_search' obj\Debug\Lib\ds18b20.o: In function `ds1820StartConversion': C:\work\TestFolder\testProject/..\Lib\ds18b20.c:139: undefined reference to `w1_reset' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:151: undefined reference to `w1_command' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:154: undefined reference to `w1_command' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:157: undefined reference to `w1_command' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:160: undefined reference to `w1_command' obj\Debug\Lib\ds18b20.o: In function `ds1820ReadTemperature': C:\work\TestFolder\testProject/..\Lib\ds18b20.c:199: undefined reference to `w1_reset' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:209: undefined reference to `w1_bit_io' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:218: undefined reference to `w1_reset' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:231: undefined reference to `w1_command' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:236: undefined reference to `w1_command' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:242: undefined reference to `w1_command' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:247: undefined reference to `w1_command' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:254: undefined reference to `w1_byte_rd' C:\work\TestFolder\testProject/..\Lib\ds18b20.c:255: undefined reference to `w1_byte_rd' Process terminated with status 1 (0 minutes, 1 seconds) 15 errors, 18 warnings где ошибка?)) в каких настройках
|
|
|
|
|
Nov 26 2008, 08:55
|
Частый гость
 
Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210

|
Да, спасибо, уже нашел где это включить... и, как оказалось, линкеру передаются все файлы. Однако, немогу понять во первых почему линкуется другим файлом, обычно компилер и линкер - один и тот-же файл Цитата avr-gcc.exe -mmcu=atmega128 -Wall -DF_CPU=16000000UL -mmcu=atmega128 -g -Os -g -IC:\work\TestFolder\testProject\ -IC:\WinAVR\avr\include -c ds18b20.c -o obj\Debug\ds18b20.o avr-gcc.exe -mmcu=atmega128 -Wall -DF_CPU=16000000UL -mmcu=atmega128 -g -Os -g -IC:\work\TestFolder\testProject\ -IC:\WinAVR\avr\include -c main.c -o obj\Debug\main.o avr-gcc.exe -mmcu=atmega128 -Wall -DF_CPU=16000000UL -mmcu=atmega128 -g -Os -g -IC:\work\TestFolder\testProject\ -IC:\WinAVR\avr\include -c 1WIRE.C -o obj\Debug\1WIRE.o avr-g++.exe -Lobj\Debug -Lobj\Debug\Lib -LC:\WinAVR\avr\lib -o bin\Debug\testProject.elf obj\Debug\DELAY.o obj\Debug\buffer.o obj\Debug\ds18b20.o obj\Debug\main.o obj\Debug\1WIRE.o -mmcu=atmega128 -Wl,-Map=bin\Debug\testProject.elf.map,--cref obj\Debug\ds18b20.o: In function `ds1820StartConversion': C:\work\TestFolder\testProject/ds18b20.c:139: undefined reference to `w1_reset' C:\work\TestFolder\testProject/ds18b20.c:157: undefined reference to `w1_command' C:\work\TestFolder\testProject/ds18b20.c:160: undefined reference to `w1_command' obj\Debug\ds18b20.o: In function `ds1820ReadTemperature': C:\work\TestFolder\testProject/ds18b20.c:199: undefined reference to `w1_reset' C:\work\TestFolder\testProject/ds18b20.c:209: undefined reference to `w1_bit_io' C:\work\TestFolder\testProject/ds18b20.c:218: undefined reference to `w1_reset' C:\work\TestFolder\testProject/ds18b20.c:247: undefined reference to `w1_command' C:\work\TestFolder\testProject/ds18b20.c:254: undefined reference to `w1_byte_rd' C:\work\TestFolder\testProject/ds18b20.c:255: undefined reference to `w1_byte_rd' obj\Debug\ds18b20.o: In function `ds18b20Init': C:\work\TestFolder\testProject/ds18b20.c:91: undefined reference to `w1_rom_search' Process terminated with status 1 (0 minutes, 1 seconds) 10 errors, 0 warnings и в принципе видно, что проблема только в этом файле. Интересен порядок использования файлов. изменение линкера результата не дало... проблема где-то в моих проектах, на тестовом проекте работает нормально
Сообщение отредактировал Григорий2000 - Nov 26 2008, 09:04
|
|
|
|
|
Nov 26 2008, 18:27
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Привет, Григорий2000! Цитата(Григорий2000 @ Nov 26 2008, 13:55)  Код C:\work\TestFolder\testProject/ds18b20.c:139: undefined reference to `w1_reset' Глупый вопрос: а ты абсолютно уверен, что `w1_reset' и прочие ненаходимые линкером символы имеются в переданных ему для линковки модулях? Что на этот счет говорит nm?
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Nov 26 2008, 18:55
|
Частый гость
 
Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210

|
Цитата(alx2 @ Nov 26 2008, 21:27)  Привет, Григорий2000! Глупый вопрос: а ты абсолютно уверен, что `w1_reset' и прочие ненаходимые линкером символы имеются в переданных ему для линковки модулях? Что на этот счет говорит nm? уверен на 220% я не понял в чем проблема, но все решилось простым образом. у меня в проекте были как с так и cpp файлы. как только я переименовал ds18b20 в cpp все скомпилировалось. разбираться в причине не стал, но был-бы признателен за пояснения произошедшего. и я совсем "некопенгаген" что такое nm..(простите мне мое невежество)
|
|
|
|
|
Nov 27 2008, 06:58
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045

|
Цитата(Григорий2000 @ Nov 26 2008, 20:55)  уверен на 220% я не понял в чем проблема, но все решилось простым образом. у меня в проекте были как с так и cpp файлы. как только я переименовал ds18b20 в cpp все скомпилировалось. разбираться в причине не стал, но был-бы признателен за пояснения произошедшего. и я совсем "некопенгаген" что такое nm..(простите мне мое невежество) Ответ тут получается очень простым. Если вы используете функции написанные на С в программе на С++, то её (функцию) необходимо обьявить как extern "C". Это всё надо так как компилятор С++ добавляет префиксы и постфиксы к именам всех функций что б различать перегруженные, а компилятор С - нет (как это называется по научному - извините не помню). Универсальный подход к такому вопросу такой: во все заголовочные файлы добавляйте такие макросы Код #ifndef SOME_HEADER_H #define SOME_HEADER_H
#ifdef __cplusplus extern "C" { #endif
// тут обьявлены функции
#ifdef __cplusplus } #endif
#endif //SOME_HEADER_H nm утилита из набора binutils для вывода всех символов, обьявленных в обьектном файле, например Код nm ds18b20.o выдаст список всех имён функций и не только в этом файле. Если вы откомпилируете один и тот же исходник компилятором С и С++, и посмотрите на имена функций - поймете разницу и почему линкер не находил функций.
|
|
|
|
|
Dec 18 2008, 13:52
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(_Pasha @ Dec 18 2008, 05:15)  Запускаю objdump из-под сабжа- что ни делаю, он дамп выдает в stderr. У меня objdump выводит в stdout (binutils-2.18). Видимо, перенаправление вывода у тебя делает сабж.
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Dec 19 2008, 12:31
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(AHTOXA @ Dec 19 2008, 00:12)  могу дать только идеологический совет - пользовать custom makefile. Видимо, такида. Дырявые эти расцветастые плагины. Вот еще одну багу нашел (опять же AVR): 1. Создали проект. 2. Походу решили поменять девайс. Результат: в компилере - то мы поменяли все, а в опциях линкера девайс остался старый, который прописан при создании проекта. И к опциям нет доступа. Только через редактирование ручками *.cbp Такой хоккей нам не нужен (Ц)
|
|
|
|
|
Dec 19 2008, 13:10
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(_Pasha @ Dec 19 2008, 15:31)  в опциях линкера девайс остался старый, который прописан при создании проекта. И к опциям нет доступа. Только через редактирование ручками *.cbp Как это? Project -> Properties -> Кнопочька "Project's Build Options" Выбираете любые ключи, флаги, кристаллы и т.д. Правда, я под МСП, без визарда, но через имеющийся интерфейс к MSPGCC
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Dec 19 2008, 14:18
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(AHTOXA @ Dec 19 2008, 10:52)  Надо написать bat-файл с вызовом avr-objdump, и его прописать в post-build. Вроде работает. Вроде непонятно, почему работает. Если просто вызов одной команды заменен на вызов другой, то почему вывод первой сабж перенаправлял в stderr, а вывод второй перенаправлять не стал?
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Dec 19 2008, 15:33
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(MrYuran @ Dec 19 2008, 17:10)  Как это? Опять же, не забудьте - AVR. Может, в других случаях и не так. Этими галочками можно поменять камень только для компилятора. Для линкера - надо отдельно полезть на его вкладку и прописать там ключик. Цитата И к опциям нет доступа Это я немного приврал  - с непривычки запутался в release/debug.
|
|
|
|
|
Dec 19 2008, 19:49
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(alx2 @ Dec 19 2008, 19:18)  Вроде непонятно, почему работает. Если просто вызов одной команды заменен на вызов другой, то почему вывод первой сабж перенаправлял в stderr, а вывод второй перенаправлять не стал? Я может не совсем внятно выразился. Создаём файл make-list.bat, в нём Код avr-objdump -h -S proj.elf > proj.lss После этого c::b вызывает его, скажем так: Код make-list.bat &1>2 Но теперь это совсем не мешает перенаправлению в файл внутри батника  ЗЫ. Имена файлов можно передавать как параметры, для гибкости.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 23 2009, 07:22
|
Частый гость
 
Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042

|
всё сделал по пунктам, но выдаёт сообщение: "cb - all" uses an invalid compiler. Skipping... Nothing to be done. 3)- копирую настройки компилятора, который стоит по умочанию это должен быть GNU GCC ? тогда во всех вкладках всё равно настройки GNU GCC (в Compiler flags.. , Toolchain executables .. ) может это связано с тем что softune установлен не в С:\Program Files\ а в корень С:\ или всё это делается лишь для того чтобы editor C::B использовать из под softune?
|
|
|
|
|
Jan 23 2009, 07:44
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Terrabyte @ Jan 23 2009, 10:22)  может это связано с тем что softune установлен не в С:\Program Files\ а в корень С:\ ? В настройках можно (и нужно) явно указать путь к компилятору - покопайтесь по вкладкам
У меня так настроено под mspgcc Цитата без движения вперед - грядет топтание на месте! Ну почему же, есть назад, право, лево и другие стороны!
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jan 23 2009, 11:24
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Terrabyte @ Jan 23 2009, 12:22)  всё сделал по пунктам, но выдаёт сообщение: "cb - all" uses an invalid compiler. Skipping... Nothing to be done.  Ткните в проект, "Build options", выберите слева цель "all" и укажите для неё компилятор Softune. Цитата 3)- копирую настройки компилятора, который стоит по умочанию это должен быть GNU GCC ? тогда во всех вкладках всё равно настройки GNU GCC (в Compiler flags.. , Toolchain executables .. ) может это связано с тем что softune установлен не в С:\Program Files\ а в корень С:\ или всё это делается лишь для того чтобы editor C::B использовать из под softune? Это без разницы, у нас "custom makefile" проект. Всё задано там, в makefile. Нам надо лишь научить c::b парсить выдачу компилятора. Цитата или всё это делается лишь для того чтобы editor C::B использовать из под softune? Конечно. Я же сразу написал, что отлаживаться под c::b не получится. Цитата(MrYuran @ Jan 23 2009, 12:44)  В настройках можно (и нужно) явно указать путь к компилятору Необязательно
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 4 2009, 15:41
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(_Pasha @ Dec 18 2008, 03:15)  Вот не могу понять. Запускаю objdump из-под сабжа- что ни делаю, он дамп выдает в stderr. Наблюдаю в окне build вместо файла. Блин, мозг сломал... не понимаю Подскажите, плз, что делать. Кстати, забыл в свое время отписАться по этому поводу. Секрет прост, после традиционного RTFM Код cmd /c avr-objdump и т.д. для выни
|
|
|
|
|
Jul 21 2009, 15:07
|
Местный
  
Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205

|
Цитата В CodeBlocks можно такой фокус провернуть? Можно. Плагин AStyle называется.
|
|
|
|
|
Jul 21 2009, 15:08
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Pasa @ Jul 21 2009, 17:48)  А вот такой вопрос. В VS можно выделить блок текста и одним нажатием отформатровать код, чтобы все многократно вложенные друг в друга if while for и т.д. выстроилсь аккуратненько друг под другом со своими скобочками и согласно уровню вложения. В CodeBlocks можно такой фокус провернуть? Можно, в виде плагина есть свободный форматтер Astyle Есть еще много разных фишек. До VS и Eclipse конечно далеко, но для эмбеда самое то. Можно писать свои плагины и визарды.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Dec 23 2009, 20:50
|
Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003

|
Цитата(_Pasha @ Dec 23 2009, 19:15)  Созрел вопрос... Я конечно совсем не специалист в GCC, но думаю следующее. Первое с чего стоит начать - настроить CB для работы с пользовательским мэйкфайлом, который попросить у студиии. Сравнить результаты. Бред конечно, но фокусы разные бывают. 2. Может быть попробовать ключом -nodefaultlibs сказать кодеблоксу, чтобы он подключал только те либы, которые ему названы. 3. Не может ли быть такого, что подключаются разные стартап файлы? Хотя 2к кода и 200 байт озу вряд-ли может отъесть стартап.
Сообщение отредактировал smac - Dec 23 2009, 20:51
|
|
|
|
|
Dec 24 2009, 05:46
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(_Pasha @ Dec 23 2009, 19:15)  ЗЫ: все-же вручную makefile писать надежнее... Я тоже так решил уже давно, тем более что у С::В есть два комплекта настроек - общие и внутрипроектные. И такая фишка, как приоритет общих или внутренних настроек. Так вот задолбался всем этим хламом рулить. Меняешь-меняешь галочки, крышу сносит, а оказывается он из другого места ключи берёт. А против makefile не попрёшь.. Кстати, нет ли у кого профайлера под mspgcc? Типо makefileMaker-а? Или из чего переделать А то буду вручную писать
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 9 2010, 11:42
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(_Pasha @ Apr 9 2010, 15:53)  Попробовал 20100227 rev6181. Новый официальный релиз? Или из закромов? До недавнего времени на оф. сайте был релиз 2008г. Недавно заметил, что фича <Alt>+"стрелочки" в С::В таки есть
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 7 2010, 08:08
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(MrYuran @ Jun 7 2010, 10:01)  Итак, спустя два года, вышел новый релиз C::B 8.02->10.05 Список поддерживаемых компиляторов, языков и плагинов впечатляет. По мне, так не хватает только встроенной поддержки doxygen, хотя теги в тексте подсвечиваются. В общем, полноценная среда не только для embedded, но и для программирования PC. Появились визарды для ARM-GCC, PowerPC и TriCore (а это что за зверь?) гуд! отлаживать по jtag через саязку OpenOCD + GDB получается? а то сей акт у меня никак до сих пор неполучался исполнть.
|
|
|
|
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|
|