Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Попытка скомпилировать первую программу в CodeBlocks для ARM.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Oleg_IT
Использую CodeBlocks 10.05 с компилятором Yagarto.
Создаю новый проект ARM Project, на очередном шаге «ARM evaluation board» не вижу своих ARM-ов (ARM926EJ-S(OMAP-L138, am1808) и LPC2478). Может plugins какие для этого поставить нужно?
Есть библиотека, взятая из инета. При компиляции возникает ошибка

warning: 'always_inline' attribute ignored [-Wattributes]|
warning: type defaults to 'int' in declaration of 'inline' [-Wimplicit-int]|
warning: 'const' attribute ignored [-Wattributes]|
error: expected ',' or ';' before 'uint16_t'

на строке
static av_always_inline av_const uint16_t bswap_16(uint16_t x)

# define av_const __attribute__((const))
# define av_always_inline __attribute__((always_inline)) inline
Как исправить?

Были рекомендации от Idle использовать С99. А как сказать компилятору, в CodeBlocks, что бы он именно по этому стандарту работал?
Idle
знать не знаю, но google://codeblocs.c99 выдаёт
Цитата
very simple. In the project properties (right click over project->properties) click "Project's build options..." button, then in "Compiler settings" tab, click in "Other options" sub-tab. Type "-std=c99" in text area and thats all.
Oleg_IT
Как важно правильно вопрос задатьsm.gif Спасибо.
Но проблемы остались, в h файле в записях подобной этой

typedef union {
……………
} av_alias av_alias64;

ошибки
warning: command line option '-std=c++0x' is valid for C++/ObjC++ but not for C [enabled by default]
warning: command line option '-std=c++98' is valid for C++/ObjC++ but not for C [enabled by default]
warning: command line option '-std=c++0x' is valid for C++/ObjC++ but not for C [enabled by default]
warning: command line option '-std=c++98' is valid for C++/ObjC++ but not for C [enabled by default]
D:\..\intreadwrite.h|34|error: expected '=', ',', ';', 'asm' or '__attribute__' before 'av_alias64'
D:\..\intreadwrite.h|41|error: expected '=', ',', ';', 'asm' or '__attribute__' before 'av_alias32'
D:\..\intreadwrite.h|46|error: expected '=', ',', ';', 'asm' or '__attribute__' before 'av_alias16'
D:\..\intreadwrite.h|183|error: conflicting types for 'av_alias'
D:\..\intreadwrite.h|182|note: previous declaration of 'av_alias' was here
D:\..\intreadwrite.h|184|error: conflicting types for 'av_alias'
D:\..\intreadwrite.h|182|note: previous declaration of 'av_alias' was here

Установка и снятие флажков «-std=c++0x» «-std=c++98» в конфигурации не помогает.
Bass
Цитата
Установка и снятие флажков «-std=c++0x» «-std=c++98» в конфигурации не помогает.

а вы их где ставите/снимаете? если в settings->compiller and debuger, то уже надо смотреть в проект (project->build options), и возможно даже вручную убирать их из вкладки other options.
MrYuran
Лучше всё-таки использовать makefile sm.gif
Тогда не будет неопределённости.
В С::В есть два "комплекта настроек" - для проекта и для тулчейна в целом. И переключаемые приоритеты.
Так что смотрите внимательнее.

В makefile надо добавить CFLAGS += -std=gnu99
Oleg_IT
Да, я уже обратил внимание, что там два комплекта настроек, флажки ставлю и снимаю синхронно.
В "Other options" ставлю и "-std=c99" и "-std=gnu99" не помогло.

Как я понимаю свой makefile выбирается в свойствах проекта во вкладке "Project settings" установкой флажка "This is a custom Makefile". Но проблема в том, что я структуру makefile плохо знаю, работал на всяких визартах.
Где посмотреть какой makefile сам CodeBlocks генерит?
MrYuran
Цитата(Oleg_IT @ May 23 2011, 14:56) *
Где посмотреть какой makefile сам CodeBlocks генерит?

В корне проекта обычно лежит Makefile, а в папках - кусочки .mk
Oleg_IT
Создал тестовый проект, скомпилил, но makefile в директории проекта и в поддиректориях нет.

Как я понимаю, целевой МК задаётся в той же вкладке “Other options” –cpu= (такая опция стоит в тестовом проекте). У меня это arm926ej-s. Но в документации на компилятор дано -mcpu=, там ещё -march= есть. В чем разница? Или это алиасы?
Не получается у меня преодолеть ошибки
D:\..\intreadwrite.h|34|error: expected '=', ',', ';', 'asm' or '__attribute__' before 'av_alias64'
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.