реклама на сайте
подробности

 
 
15 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> Code::Blocks -> How To, Как бы начать...
MrYuran
сообщение Oct 6 2008, 07:24
Сообщение #46


Беспросветный оптимист
******

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



Цитата(Григорий2000 @ Oct 6 2008, 10:46) *
работает ли в таком виде..

В таком чё-то никак...
Немного изменил описание структуры - вот:
Прикрепленное изображение


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Григорий2000
сообщение Oct 6 2008, 07:39
Сообщение #47


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210



Эврика! Теперь работает... а я использовал всегда именованные струтуры... потому и неработало)))
Премного благодарен уважаемый... я б об этом думал бы в последнюю очередь... еслиб догадался)))
Теперь CodeBlocks для меня стала нормальной средой, а не просто бесплатным продуктом)))

Сообщение отредактировал Григорий2000 - Oct 6 2008, 07:45
Go to the top of the page
 
+Quote Post
Григорий2000
сообщение Nov 26 2008, 06:59
Сообщение #48


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210



Подскажите, кто-нибудь пользуется автогенерацией makefile или все используют свой внешний makefile ?
Что то у меня не получилось скомпилировать проект из неодного исходника, с одним компилирует а с неодним неполучается - линкер берет только один объектный файл, и , соответственно, пишет что ненайдены внешние обьекты(функции/переменные).
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 26 2008, 07:20
Сообщение #49


Беспросветный оптимист
******

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



Поставьте в настройках галочки на все предупреждения, тогда будет видно, из-за чего не линкует. Ещё, если проект разложен по папкам, надо либо прописывать компилятору и линкеру пути для поиска к каждой папке, но это лениво, я прописываю путь к корню проекта, а в исходниках прописываю полные относительные пути к хедерам, типа #include "../utils/utils.h"
Таким образом работает.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Григорий2000
сообщение Nov 26 2008, 07:38
Сообщение #50


Частый гость
**

Группа: Участник
Сообщений: 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


где ошибка?)) в каких настройках
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 26 2008, 07:46
Сообщение #51


Беспросветный оптимист
******

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



Внизу есть вкладка Build Log, в неё можно вывести подробный лог со всеми командами, ключами и т.д. и даже сохранить его в файл. В настройках где-то есть соответственная галка.
Вот пример:
Прикрепленный файл  X3_amplifier_build_log.html ( 10.2 килобайт ) Кол-во скачиваний: 244


А вот нужные галки:
Прикрепленное изображение


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Григорий2000
сообщение Nov 26 2008, 08:55
Сообщение #52


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
kurtis
сообщение Nov 26 2008, 12:38
Сообщение #53


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Небольшой вопрос.
Возможно ли чтоб по нажатию кнопки Run осуществлялось программирование контроллера?
Сейчас я прошиваю контроллер через макрос в makefile ( т.е. в консоли пишу make prog, где prog это имя макроса ). Частично решил проблему с помощью Tools -> Configure tools... , но там нельзя назначить сочетания клавиш для автоматического запуска, да и кнопка Run оказалась незадействованной.
Go to the top of the page
 
+Quote Post
alx2
сообщение Nov 26 2008, 18:27
Сообщение #54


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Григорий2000
сообщение Nov 26 2008, 18:55
Сообщение #55


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210



Цитата(alx2 @ Nov 26 2008, 21:27) *
Привет, Григорий2000!
Глупый вопрос: а ты абсолютно уверен, что `w1_reset' и прочие ненаходимые линкером символы имеются в переданных ему для линковки модулях? Что на этот счет говорит nm?

уверен на 220%
я не понял в чем проблема, но все решилось простым образом. у меня в проекте были как с так и cpp файлы. как только я переименовал ds18b20 в cpp все скомпилировалось. разбираться в причине не стал, но был-бы признателен за пояснения произошедшего. и я совсем "некопенгаген" что такое nm..(простите мне мое невежество)
Go to the top of the page
 
+Quote Post
msalov
сообщение Nov 27 2008, 06:58
Сообщение #56


Знающий
****

Группа: Свой
Сообщений: 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
выдаст список всех имён функций и не только в этом файле. Если вы откомпилируете один и тот же исходник компилятором С и С++, и посмотрите на имена функций - поймете разницу и почему линкер не находил функций.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 27 2008, 07:56
Сообщение #57


Беспросветный оптимист
******

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



А линкер-то g++ используется или gcc?
Цитата
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':


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Григорий2000
сообщение Nov 27 2008, 09:05
Сообщение #58


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210



C выводом обьявлений функций как

#ifdef __cplusplus
extern "C" {
#endif

все успешно линкуется.
незапоминаю решения в котрых непонятен принцип действия.
С этим ответом встало все на свои места...

используется линкер g++(поумолчанию)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 18 2008, 00:15
Сообщение #59


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Вот не могу понять. Запускаю objdump из-под сабжа- что ни делаю, он дамп выдает в stderr. Наблюдаю в окне build вместо файла. Блин, мозг сломал... не понимаю Подскажите, плз, что делать.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 18 2008, 06:18
Сообщение #60


фанат дивана
******

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



objdump 2>&1 тоже не помогает? smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

15 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016