Перейти к содержанию
    

Попытка скомпилировать первую программу в CodeBlocks для ARM.

Использую 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, что бы он именно по этому стандарту работал?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

знать не знаю, но 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как важно правильно вопрос задать:) Спасибо.

Но проблемы остались, в 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» в конфигурации не помогает.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

а вы их где ставите/снимаете? если в settings->compiller and debuger, то уже надо смотреть в проект (project->build options), и возможно даже вручную убирать их из вкладки other options.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лучше всё-таки использовать makefile :)

Тогда не будет неопределённости.

В С::В есть два "комплекта настроек" - для проекта и для тулчейна в целом. И переключаемые приоритеты.

Так что смотрите внимательнее.

 

В makefile надо добавить CFLAGS += -std=gnu99

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, я уже обратил внимание, что там два комплекта настроек, флажки ставлю и снимаю синхронно.

В "Other options" ставлю и "-std=c99" и "-std=gnu99" не помогло.

 

Как я понимаю свой makefile выбирается в свойствах проекта во вкладке "Project settings" установкой флажка "This is a custom Makefile". Но проблема в том, что я структуру makefile плохо знаю, работал на всяких визартах.

Где посмотреть какой makefile сам CodeBlocks генерит?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где посмотреть какой makefile сам CodeBlocks генерит?

В корне проекта обычно лежит Makefile, а в папках - кусочки .mk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создал тестовый проект, скомпилил, но makefile в директории проекта и в поддиректориях нет.

 

Как я понимаю, целевой МК задаётся в той же вкладке “Other options” –cpu= (такая опция стоит в тестовом проекте). У меня это arm926ej-s. Но в документации на компилятор дано -mcpu=, там ещё -march= есть. В чем разница? Или это алиасы?

Не получается у меня преодолеть ошибки

D:\..\intreadwrite.h|34|error: expected '=', ',', ';', 'asm' or '__attribute__' before 'av_alias64'

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...