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

Вот как раз только закончил ковырять мануалы линковщика и компилятора. Правда под dsPIC. Делал для создания конфигурационного файла под UEStudio. Потратил 3 дня. За то какая сейчас прелесть работать и компилить в UEStudio :yeah: Если поможет, могу кинуть сам конфиг.файл для UEStudio: сделал его с русскими комментариями, думаю разберёшься. Да и make-файл по уже выставленным настройкам проекта создать - секундное дело.

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


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

2zltigo: образцы - зло, согласен, нужно разобраться, вот я и хочу это сделать, может быть кто то присоеденится

2МикроДИП: выложи )) с UEStudio я не знаком правда

 

вот пару интересных статей по make

http://www.citforum.ru/operating_systems/g...numake_03.shtml

http://www.linuxrsp.ru/docs/gm.html

 

вопрос №1 как автоматически генерировать зависимости файлов? как известно make это делает с пом. компилятора gcc, компилятор IAR же это делать не умеет (или я не знаю как )), а добавлять руками в Makefile имена исходников - не удобно...

 

если посмотреть в дирректорию .dep в которой лежат файлы зависимости, то можно увидеть несколько файлов с именами как у исходников, но с расширением *.o.d, каждый из которых содержит список файлов, от которых зависит данный *.obj (свой *.с + все подключенные хидеры)

наверное это можно сделать скриптом, но парсить исходники в наши задачи пока не входит)))

нужна утилита, результатом работы которой была бы дирректрия .dep с файлами нужного формата

 

вообще задача не сложная, решение должно быть!

Изменено пользователем helius

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


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

вопрос №1 как автоматически генерировать зависимости файлов? как известно make это делает с пом. компилятора gcc, компилятор IAR же это делать не умеет (или я не знаю как )), а добавлять руками в Makefile имена исходников - не удобно...

Папку dsPIC IAR C_C++ вместе с файлом Application необходимо разместить в каталог configs той дирректории, в которую установлен UEStudio. После этого в настройках и установках компиляторов появится и этот компилятор.

 

По поводу зависимости файлов - это прописывается в настройках IDE. В том примере, что вы привели ссылку, это называется шаблонное правило. Не знаю точно, но думаю что в IDE самого иара эти зависимости прописаны жёстко, скорее всего в dll-ках (для каждого компилятора (читай каждого процессора) - свои расширения объектных файлов и, соответственно, свои зависимости), к которым уже обращается iarbuild.exe. Для внешней среды, если не используете иаровский билдер, то нужно прописывать их руками. В моём файле я эти зависимости прописывал.

dsPIC_IAR_C_C__.rar

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


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

..компилятор IAR же это делать не умеет

Умеет. И в том числе в make стиле.

Документацию почитайте.

 

 

 

По поводу зависимости файлов - это прописывается в настройках IDE

Не :( это Вы чего-то совсем не понимаете :(. Например, при изменении header файла надо перекомпилировать все файлы куда он включен.

 

P.S.

А вообще, если к make не прикипели, то может быть обратите внимание на альтернативные типа http://www.scons.org

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


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

Не :( это Вы чего-то совсем не понимаете :(. Например, при изменении header файла надо перекомпилировать все файлы куда он включен.

P.S.

А вообще, если к make не прикипели, то может быть обратите внимание на альтернативные типа http://www.scons.org

Нет, это понятно. Я имею ввиду вот что: где прописывается в ИАРе, файлы с каким расширением должен выдать компилятор ? Эти файлы, в свою очередь, для кого являются входными файлами ? Какие файлы должен выдать на выходе линковщик ? И т.д. Вот сейчас прикручивал ИАР к UEStudio. Там всё это прописывается в конфиге. И на основании уже этих данных генерится make-файл и очерёдность выполнения тех или иных действий.

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


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

Нет, это понятно. Я имею ввиду вот что: где прописывается в ИАРе, файлы с каким расширением должен выдать компилятор ?

расширения по умолчанию не задаются, но полное имя можете, как и у любого другого компилятора указывать. Расширения по умолчанию описаны в документации.

Эти файлы, в свою очередь, для кого являются входными файлами ?

Для кого прикажете в makefile для того и будут. Ничего не понял :(

Какие файлы должен выдать на выходе линковщик ?

какие прикажите ему (и типы, и имена, и расширения)такие и выдаст...

Там всё это прописывается в конфиге. И на основании уже этих данных генерится make-файл и очерёдность выполнения тех или иных действий.

Обсуждать автоматические генераторы makefiles совсем нет желания.

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


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

Умеет. И в том числе в make стиле.

Документацию почитайте.

гм, хорошая новость, rtfm-лю )

 

наша задача не исползовать iarbuild, IDE и автогенерацию Makefile,

так как речь идет о компиляции проектов для встраиваемых систем, то мне кажется, что большую часть проектов можно описать в Makefile руками, есть конечно какие то сложные и специфичные проекты с сложной структурой и фичами, типа автогенерации исходников в процессе компиляции для которых используют, например, Cmake утилиту, но это уже другая ветка ))

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


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

извиняюсь за темпы, много работы =)

 

действительно, все очень просто, IAR отлично задокументирован и вобще оставил хорошее впечатление своей поддержкой командной строки и даже имеет ключики не доступные из IDE ))) польза от них - другой разговор )))

И так, я сделал заготовку Makefile, в коментах все заинтересовавшие меня ключи компиллера,

make all:

создание директорий /list /Obj /Exe как в IAR было давно заведено

автопоиск всех исходных *.с, (пока в одной рабочей дирректории)

компилирование всех исходников в обьектники с авто-построением зависимостей (директория /.dep) файлов в стиле make

make clean:

вычищение директорий от листингов, обьектников, и зависимостей

 

что дальше 2DO:

компилирование ассемблерных файлов тоже

подключение директорий в которых лежат разные инкулюды (по стандартным и не очень путям)

линковка по указанному файлу *.xcl

 

выставляю на суд общественности, если кому интересно - гляньте пожалуйста, я make то учу только )))

 

Какой ужас! модераторы правда думают что кто то будет читать хелп к форуму на английском? ))) это нормально что по запросу Upload там ничего не нашлось? как файлы то вешать тут?! или только ftp? или у меня кармы не хватает? =))

test.txt

Изменено пользователем zltigo

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


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

и даже имеет ключики не доступные из IDE )))

Из IDE доступны абсолютно все ключики, разве только не через галочки.

 

 

как файлы то вешать тут?!

Прямо при редактировании и вешать, правда форум сейчас в разбитом состоянии и говорят не у всех работает. Добавил "пустой" файл в Ваш пост.

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


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

Из IDE доступны абсолютно все ключики, разве только не через галочки.

"--no_wrap_diagnostics... This option is not available in the IAR Embedded Workbench IDE." стр 138, ARM® IAR C/C++ Compiler Reference Guide

я вот что имел ввиду

 

понятно, попробую завтра с работы )))

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


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

This option is not available in the IAR...

И генерация зависимостей недоступна и ... и .... и тем не менее все это можно указать в виде явных ключей в опциях. Нет только "галочек".

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


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

асм компилится, папки поддерживаются ))

теперь интересный вопрос, касающийся линковки и линкера

что ему нужно кроме *.xcl файл + все наши обьектники? судя по листингу линкера, в командной строке он подключает

C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\ARM\LIB\dl4tptinl8f.r79" какой то обьектник...

в хидере написано Customer-specific DLib configuration. таких файлов там всего то 84, как выбрать нужный я пока не знаю... ни какой связи к конкретным процессором я не нашел...

кроме того, где то должны линковаться файлы отвечающие за lowlevelinit, это какой нибудь asm startup - где инициализация железа + c startup где инициализация среды (памяти, вход в main)

Изменено пользователем helius

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


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

Навесить у меня так и не получается (Firefox 3.0.5) поэтому держите линк: http://files.mail.ru/9S3R2Q

 

Все двигается медленнее чем хотелось бы, мало времени... В следующим релизе постараюсь получше закоментить,

а вобще, желательно если бы кто то посмотрел - попробовал, чтоб появлялись вопросы и мы их тут обсуждали

иначе получится очередной шаблон...

 

# чего нет:

# не ищет зависимости асм файлов

# не поддерживает контроль файлов, когда они в /obj, - перекомпилирует каждый раз всё,

# поэтому пока генерит *.obj в рабочую директорию

 

# что есть:

# v1.2

# - поиск исходников (*.с, *.s79) в директориях перечисленных в переменной source_dirs

# - компиляция *.с, *.s79 в обьектники r.79 (ложатся в корень проекта)

# - автоматическая генерация зависимостей исходных файлов от хидеров *.h

# - передача ключей компилятору

# - цели all, clean

#

# v1.1

# - компиляция *.с исходников в *.obj все лежит в папке где Makefile

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


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

а вобще, желательно если бы кто то посмотрел - попробовал, чтоб появлялись вопросы и мы их тут обсуждали

иначе получится очередной шаблон...

Ну, наверное, только к выходным поближе :(

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


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

# - компиляция *.с, *.s79 в обьектники r.79 (ложатся в корень проекта)

Ложатся не обязательно в корень. Иногда удобнее, когда ложатся в <Имя_конфигурации>\Obj.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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