Jump to content

    

Eclipse Linux ARM копирование собранного на таргет

Всем привет,

Собственно, дело в следующем:

Есть хост Ubuntu и есть таргет ARM. Пишу и собираю в Eclipse. Для запуска ручками копирую собранное на хосте на таргет. Это неудобно. Подскажите, как правильно организовать передачу собранного софта с хоста на таргет через SSH?

Я представляю примерно следующие этапы:

1. Написал;

2. Скомпилировал;

3. Eclipse сложил скомпилированное на таргет по заранее известному пути через SSH;

4. Профит - либо запускаешь отладку, либо через консольку на таргете запускаешь свежесобранное ПО.

Гугл особо ничем не помог.

Спасибо.

Share this post


Link to post
Share on other sites

Добавить в Makefile соответствующую цель, где будет вызываться scp...

Share this post


Link to post
Share on other sites

на таргете ставишь gdbserver

на хосте в эклипсе Ddebug Configuration->C/C++ Remoute Application->Main->... там далее.... интуитивно понятно. Если C/C++ Remoute Application нет, то плуг к эклипсе ставиться.

На вкладке MAin сделать конектион (см скрин). указать абсолютный путь на таргете до исполняемого файла, на вкладке дебуг указать путь до gdb на хосте (см скрин)

image.png

image.png

image.png

Share this post


Link to post
Share on other sites

Спасибо. Вопрос (пока под рукой нет железки проверить):

2 minutes ago, juvf said:

 На вкладке MAin сделать конектион (см скрин). указать абсолютный путь на таргете до исполняемого файла, на вкладке дебуг указать путь до gdb на хосте (см скрин) 

 

По этому пути Эклипс СКОПИРУЕТ собранный файл, или по этому пути Эклипс ОЖИДАЕТ увидеть исполняемый файл, что бы к нему зацепится?

7 minutes ago, Eddy_Em said:

Добавить в Makefile соответствующую цель, где будет вызываться scp...

Т.е. из Makefile я могу ПОСЛЕ сборки вызвать scp, который сложит мне артефакты сборки на таргет?

Share this post


Link to post
Share on other sites

 

21 минуту назад, nice_vladi сказал:

Спасибо. Вопрос (пока под рукой нет железки проверить):

По этому пути Эклипс СКОПИРУЕТ собранный файл, или по этому пути Эклипс ОЖИДАЕТ увидеть исполняемый файл, что бы к нему зацепится?

1. пишешь программу

2. нажимаешь debug

ВСЁ!!! makefile не то что не трогать.... забыть про его существование и ни когда не вспоминать. Пусть его знает эклипс.

можно скомпилироват предварительно, можно просто запустить дебуг.

при нажатии дебуг эклипс проверяет, если в сырцах изменения, то эклипс автоматом запустит сборку. после сборки эклипс по ssh через конектион выгружает на таргет бинрник по Ремоут абсолют файл паф. Далее... эклипс на таргете запускает gdbserver с бинарником из того же Ремоут абсолют файл паф. Далее эклипс запускает на хосте дебугер, который цепляется к запущенному на тергете серверу. Далее эклипс запускает на выполнение программу на таргете. Программа останавливается на входе в функцию main() (если галка стоит) и ждёт тебя. Далее дебажишь... пошагово, с брейками.... ПРОФИТ!!!

Если на вкладке поставить галку skip download to target, то эклипс сделает всё тоже самое, но не будет выгружать бинарник с хоста на таргет, запустит старый бинарник.

Это на пальцах.... там ещё всякие настройки... порт гдб (можно любой, оставь дефолтный)....  можно запускать с аргументами.... я указываю где искать билы для бинарника.... image.png.baad7828058ce4070a7b99c949aef7a5.png

 

ps лайфхак:  Windows->Preferences->General->Workspase->Save automatically before build - установи эту галку, чтобы все изменения в тексте автоматом сохранялись перед сборкой/дебугом. Иначе в тексте поменял строки, а компилятор сокмпилит не тот код, который в окошках эклипса, а тот, который на диске в файлах.

 

Share this post


Link to post
Share on other sites
6 minutes ago, juvf said:

1. пишешь программу

2. нажимаешь debug

ВСЁ!!!

...

 

 

Понял, спасибо. Я люблю, когда все так просто)

Share this post


Link to post
Share on other sites

Коллеги HELP, вторую неделю мучаю https://www.microchip.com/DevelopmentTools/ProductDetails/atsama5d27-som1-ek1 вот эту плату, там есть для нее простой старт https://www.linux4sam.org/bin/view/Linux4SAM/Sama5d27Som1EKMainPage#Demo_archives. Я честно признаюсь не "ленуксойд" не разу только делаю первые шаги. Саму систему вроде как я на SoC запустил. Потом взял ноутбук поставил на него Ubuntu 18.4, установил Eclipse на него, и вот этой строкой $sudo apt-get install gcc-arm-Linux-gnueabi установил кросс компилятор (по крайне мере я так думаю ) в usr/ появились две папки gcc-arm-Linux-gnueabi и gcc-arm-Linux-gnueabihf. Указал в Eclipse и в окружении на них но при попытке собрать "холиворд" Eclipse в упор не видит там не каких компиляторов. Попробовал собрать croosstool-ng, что бы с другого бока зайти но там вообще утонул с непривычке в этом терминале. Вопрос что я делаю не так в сети натыкался что если машина 64-х разрядная то там то нужно дополнительные пакеты надо ставить вроде все перепробовал тупик. 

 

Share this post


Link to post
Share on other sites
20 minutes ago, PeterD said:

Указал в Eclipse и в окружении на них но при попытке собрать "холиворд" Eclipse в упор не видит там не каких компиляторов.

Ни разу не спец по Eclipse, но, наверное, при попытке собрать он должен что-нибудь сообщать в консоли, что можно было бы скопировать сюда.

Share this post


Link to post
Share on other sites
19 hours ago, PeterD said:

 Указал в Eclipse и в окружении на них но при попытке собрать "холиворд" Eclipse в упор не видит там не каких компиляторов. Попробовал собрать croosstool-ng, что бы с другого бока зайти но там вообще утонул с непривычке в этом терминале. Вопрос что я делаю не так в сети натыкался что если машина 64-х разрядная то там то нужно дополнительные пакеты надо ставить вроде все перепробовал тупик. 

 

При установке пакетов  обычно все необходимое автоматически доставляется, поэтому посчитаем, что все необходимое есть.

На форуме есть раздел с обсуждением кросс-компиляции с использованием Eclipse, посмотрите его. Вам стоит решить по какому пути идти при работе с Eclipse: все настройки внутри, есть тонкости (выше этот путь описал juvf) или использовать систему сборки (например, make) и какой-то любимый редактор. Использование системы сборки, на мой взгляд, удобнее, ее можно использовать в любым редактором, можно собрать проект не запуская редактор вообще.

Share this post


Link to post
Share on other sites
On 11/21/2019 at 1:32 AM, PeterD said:

...Eclipse в упор не видит там не каких компиляторов..

Эклипсу нужно явно рассказать, как и какие компиляторы-линкеры использовать. Напимер, мой сетап:
 

Spoiler

Project Properties -> C/C++ Build -> Settings -> Вкладка Tool Settings и погнали,
Cross GCC complier

Command: /usr/bin/arm-linux-gnueabihf-gcc

All options: -I/usr/arm-linux-gnueabihf/include -O0 -g -Wall -c -fmessage-length=0

Crocc GCC linker

Command: /usr/bin/arm-linux-gnueabihf-gcc

All options: -L/usr/arm-linux-gnueabihf/lib

Cross GCC assembler

/usr/bin/arm-linux-gnueabihf-as

 

 

После этого делаете сборку и смотрите выхлоп в консольке Эклипса. Как правило, все ошибки довольно просто гуглятся, благо, тема распространненая =)

Share this post


Link to post
Share on other sites
31 минуту назад, nice_vladi сказал:

Эклипсу нужно явно рассказать, как и какие компиляторы-линкеры использовать. Напимер, мой сетап:
 

  Скрыть контент

Project Properties -> C/C++ Build -> Settings -> Вкладка Tool Settings и погнали,
Cross GCC complier

Command: /usr/bin/arm-linux-gnueabihf-gcc

All options: -I/usr/arm-linux-gnueabihf/include -O0 -g -Wall -c -fmessage-length=0

Crocc GCC linker

Command: /usr/bin/arm-linux-gnueabihf-gcc

All options: -L/usr/arm-linux-gnueabihf/lib

Cross GCC assembler

/usr/bin/arm-linux-gnueabihf-as

 

 

После этого делаете сборку и смотрите выхлоп в консольке Эклипса. Как правило, все ошибки довольно просто гуглятся, благо, тема распространненая =)

зачем так сложно? 

у меня:
 

Project Properties -> C/C++ Build -> Settings -> Вкладка Tool Settings и погнали,
Cross GCC complier

Command: gcc

Cross G++ complier

Command: g++

Crocc GCC linker

Command: g++

Cross GCC assembler

as

т.е. все компиляторы дефолтные, как при обычном (не кросс) компилировании. а вот в кросс сетингах указываем путь и префикс

Project Properties -> C/C++ Build -> Settings -> Tool Settings

Cross Settings

Prefix: arm-linux-gnueabihf-

Path: D:\SysGCC\Raspberry\bin

При смене тулчейна в одном месте правите путь и/или имя тулчейна (префикса) - у вас во всех местах меняется автоматом.

 

ps пару лайфхаков: 1) Project Properties -> C/C++ Build-> вкладка Behavior галка Enable parallel build...

2) чтоб включить пути инклудов одним махом для с/с++/asm см картинку.... и не нужно отдельно для каждого компилятора и для каждой конфигурации сборки в сетенгах добавлять пути инклуде... тамже пути к либам и Defined символы

image.thumb.png.d4344a5255cafdcecebb5c46bf6da09c.png

 

Share this post


Link to post
Share on other sites
4 hours ago, razrab83 said:

...

Cross Settings

....  

ps пару лайфхаков:

...

 

Прикольно, спасибо, буду применять)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now