как компилировать файлы в терминале линукса, если их несколько?
- Войдите на сайт для отправки комментариев
Чт, 14/06/2018 - 17:07
Один если файл, то я компилирую
avr-gcc -mmcu=микроконтроллер -Os файл.c файл.o
avr-objcopy -j .text -j .data -O ihex файл.o файл.hex
А если разбит проект на кучу файлов, тогда как быть?
надо писать make-файл, в нем уже задать что и откуда брать для компиляции.
А если разбит проект на кучу файлов, тогда как быть?
Примерно так:
Собираем отдельные файлы:
avr-gcc -mmcu=atmega328p -o "main.o" -c "main.cpp"
avr-gcc -mmcu=atmega328p -o "func.o" -c "func.cpp"
Собираем один elf:
avr-gcc -Wl,--gc-sections -mmcu=atmega328p -o "./Debug.elf" "main.o" "func.o" -lm
Делаем из него hex:
avr-objcopy -O ihex -R .eeprom "./Debug.elf" "./Debug.hex"
а можно ссылку на документацию по созданию elf файла? а то мне не известны команды типа -Wl,--gc-sections
а можно ссылку на документацию по созданию elf файла? а то мне не известны команды типа -Wl,--gc-sections
Нивапрос! ;) ;) ;)
gcc.pdf всего около 1000 страниц. И это не шутка. Нужно если не наизусть, то уверенно знать, где в этой книге искать нужное.
благодарю :)
значит так.
Делается данная процедура вот так. К примеру. у вас два файла(я попробовал с двумя).
Сначала нужно скомпилировать си файлы или слинковать. Это для меня одинаково.
avr-gcc -mmcu=atmegaXXX -Os -c первый файл.c
avr-gcc -mmcu=atmegaXXX -Os -c второй файл.c
На выходе получим первый файл.o и второй файл.o
теперь нужно сделать из этих файлов elf файл
avr-gcc -mmcu=atmegaXXX -Os -o любое имя.elf первый файл.o второйфайл.o
после делаем hex файл
avr-objcopy -j .text -j .data -O ihex elf файл файл.hex
всё.
А как залить прогу через дуде вы знаете.
значит так.
....
простите, а чем это отличается от того, что вам написали в посте #2 ?
Ну и добавлю - как раз для того, чтобы не набирать это все вручную. и существует make
Мне написали с кучей магических символов. А я придерживаюсь, делай простое еще проще, а трудное доступным
Пока я учусь, буду набирать. Так лучше запомню
"Делай простое проще.." - что за бред. Какие "магические символы"? - это опции линкера.
Вам в сообщении #4 дали ссылку, где описана вся "магия". Вы прочитали, что значат те опции, которые вы выкинули? Вы знаете, для чего они - чтобы так уверенно советовать другим их убрать?
Честно, не читал. Бегло глянул. Простое проще, пример вернуться в предыдущий каталог линукса можно по прямому пути /бла бла бла/каталог или относительному .. Проще поставить две точки?
И еще, я не советовал их убрать. Я просто написал пример тех команд, с помощью которых, успешно прошла линковка и компиляция у меня лично.
простое проще, но не всегда правильнее. Как пример - когда приперло, проще всего поссать в ближайшем подъезде, но приличные люди так не делают :)
Опять же, понятие "успешно" очень относительно. Чтобы разобраться, кто из нас прав, предлагаю поставить следующий эксперимент - возьмите какой-нибудь проект, только не блинк, а что-то посложнее - и соберите его сначала с этими "магическими опциями", а потом - без. И сравните размер получившейся прошивки в обеих случаях.
нормально у него все будет, кроме математики, он про нее забыл (-lm). А оптимизация и сборка мусора - важно лишь для больших проектов.
Важно только -lm, остальное освоит по ходу пьесы.
Вызвал я в терминале gcc --help и avr-gcc --help, команды lm там нет
Вызвал я в терминале gcc --help и avr-gcc --help, команды lm там нет
Попробуйте вызвать: avr-gcc -v --help
И тогда увидите:
спасибо. охота топором разрубить ардуино и ноутбук выкинуть с балкона. На винде и atmel studio все это проще. а что Вы скажете про Geany?
а что Вы скажете про Geany?
Я не пробовал, но люди пользуют: https://www.google.ru/search?q=Geany+AVR
Можно и Eclipse: https://www.google.ru/search?q=Eclipse+AVR
Можно что-то из платного попробовать: https://www.google.ru/search?q=CLion+AVR
Зависит от ваших предпочтений.
спасибо. охота топором разрубить ардуино и ноутбук выкинуть с балкона. На винде и atmel studio все это проще. а что Вы скажете про Geany?
что именно проще?
atmel studio проект сама собирает. я как бы и не думал что столько нужно знать
Стесняюсь спросить: при таком уровне познаний, чем именно тебе Ардуино ИДЕ не угодила?
При моем уровне - меня устраивает... хм...
ее не использую, причина программирую через usbasp. а кстати да. для линукса она же тоже есть. я считал что работать в терминале проще . хотя если постоянно пользоваться командами и знать зачем они, то реально наверно будет проще. но дело в том что я английский знаю на уровне средней школы. так что документацию иностранную читать дико
ее не использую, причина программирую через usbasp.
Это не причина, в Arduino IDE тоже можно программировать через usbasp.
Ну хорошо. Допустим, я ее установлю и буду пользоваться. Но как научиться этому в терминале? Про английский я уже писал. Да даже взять тот же goole translate, все равно некоторое не понятно, а именно, зачем оно тут и как работает.
прочитать, блин. Какого еще совета ты ждешь??
Либо гугл-транслятором, либо выучить английский. Люди, вон, с китайского гуглом переводят, а ты английский прочитать не в силах, который в школе учил.
Не говоря уж о том, что в наше время не знать хотя бы один иностранный язык - ХОТЯ БЫ АНГЛИЙСКИЙ - стыдно.
...дело в том что я английский знаю на уровне средней школы. так что документацию иностранную читать дико
Прости, но не решив эту проблему тебе стоит поменять хобби... вышивание нормально, резьба по дереву, возможно.
Это не гонор и не поза. Электроника и программирование - области полного доминирования английского языка.
Пользоваться нужно, конечно, простой Ардуино ИДЕ, пока не поймешь зачем именно тебе нужно что-то иное. Ключи линковки и компиляции - можно посмотреть в настройках ИДЕ и потом спокойно прочитать, что они значат.
На английском ;).
============================
Говоря про себя - я использую только Линух. Винда у меня есть только на виртуалках: 10 для одного банка в кабинете, и на компе в лаборатории - ХР для USB осцилографа. На остальных 4 компах дома - простой Минт, это вариант Убунты.
USBASP, конечно, нормально работает под Линухом. И СТлинк для стм32 и Еклисп, для некоторых тем. И LTSpice для моделирования и т.д.
"Ну хорошо. Допустим, я ее установлю и буду пользоваться."
Занавес. То есть ты её ещё даже не установил, но уже осуждаешь?!? круть.. до такого даже я не догадался.
Дуй на arduino.cc качай дистриб под линукс, распаковывай куда-нить в хомяке и тыкай на файло arduino.sh - это "батник" для запуска. Сиди и наслаждайся. Больше ничего не требуется. Даже драйвера ставить не надо. На твой век - более чем достаточно. :)
А не, надо будет. Включи себя в группу dialout, что разрешает писать в usb-порты. Вродже этого достаточно, не помню уже.
И ещё: если линух локализован нормально, то ИДЕ будет на родном языке локали автометом.
И ещё2: а ещё лучше, после установки зайди на гитхаб, разыщи там проект Ardublock от tawelli, качни jar последней сборки и воткни его куда следует (папка со скетчами, подпапка tools и т.д.) Далее в инструментах выбираешь tools/Ardublock и пишешь на привычном Lego scratch .. ну почти. Все в картинках, понятно удобно и даже по-русски большая часть. В общем для возраста 9-11 лет самое то.
А как ты учил английский?все слова подряд учить жизни не хватит
спасибо. охота топором разрубить ардуино и ноутбук выкинуть с балкона.
Just do it.
Я перевел как делай по справедливости. А оказалось. Просто сделай это.
Да.
"все слова подряд" ты и по русски не знаешь. Из чего простой вывод - учи те, что используются в нужной области. Самый простой метод, имхо, просто читать интересные тебе тексты, пытаясь перевести их самостоятельно. Если что непонятно - пользоватся словариком. Но не переводить гуглем. Гугль, во-первызх, переводит отвратно (английский еще туда-сюда, а другие языки - это жуть), а во-вторых, пользуясь автопереводчиком - никогда ничему не научишься.
И не ссы - английский, особенно технический - очень простой язык.
И не ссы - английский, особенно технический - очень простой язык.
Так думают все, кому еще не отвечал индус из техсаппорта )))
Так думают все, кому еще не отвечал индус из техсаппорта )))
Оффтоп.
Мне как-то индус свое резюме на английском прислал на должность Project Coordinator (походу спутал меня с кем-то). Что интересно, довольно грамотно было написано, наверно помогал кто-то :D
Мне как-то индус свое резюме на английском прислал на должность Project Coordinator (походу спутал меня с кем-то). Что интересно, довольно грамотно было написано, наверно помогал кто-то :D
Ребята, не надо зазнаваться :) большинству из нас до индусов очень далеко :)
"пиджин инглиш" или как там его :) - ужасен с точки зрения снобистких носителей английского - т.е. англичан и американцев. А вообще-то, для иностранца - индусы в массе своей очень хорошо владеют английским, не надо забывать что английский в Индии один из государственных языков.