Home » Language IDEs » C / C++ IDE (CDT) » Cross GCC (Where to get?)
Show: Today’s Messages :: Show Polls :: Message Navigator
Cross GCC [message #997570]
Tue, 08 January 2013 12:14
Jayanth D Messages: 16 Registered: December 2012
I downloaded and installed Eclipse C/C++ IDE. I tried to create a C/C++ project. It asks me to select a Cross GCC Compiler. I haven’t installed a Compiler. I want to know where I can get Cross GCC Compiler and is it free?
Re: Cross GCC [message #999417 is a reply to message #997570]
Sat, 12 January 2013 02:58
Ken Jackson Messages: 3 Registered: September 2009
You didn’t say what operating system your development computer (the «host») is running or what processor you want to generate code for (the «target»).
If your host is running Fedora Linux and you want to compile for the ARM, AVR and Blackfin processors, you can install cross compilers with these commands and similarly for other processors. (Other Linux distros use different installation commands.)
If your host is running Windows, gnutoolchains.com seems to have some cross compilers for download, though I’ve never tried those. ronetix.at/software.html and www.modularcircuits.com/blog/projects/development-tools/gcc-for-arm-avr-and-blackfin also seem to have some.
(Sorry I can’t make clickable links. That’s the forum’s weakness.)
Re: Cross GCC [message #1000345 is a reply to message #999417]
Mon, 14 January 2013 15:07
Jayanth D Messages: 16 Registered: December 2012
Thanks for replying Ken. I am using Windows 7 Ultimate 32-bit OS. I have installed MinGW and Eclipse C/C++ IDE. My C code compiles and runs without problem but my C++ code doesn’t show the o/p. I tried a simple C++ Hellow World Project which compiled succesfully but I was not able to see any Hello World message in console of Eclipse IDE. I tried several C++ programs it only compiles but running doesn’t show any o/p.
Re: Cross GCC [message #1005616 is a reply to message #997570]
Sun, 27 January 2013 14:39
Klaus km Messages: 142 Registered: November 2011
C++ programs, compiled with MinGW, need Libs to run:
Источник
Русские Блоги
Используйте Eclipse и GDB для создания среды кросс-компиляции ARM и онлайн-отладки.
Мы настроили нашу среду разработки на хосте Linux, используя в качестве примера Ubuntu 10.04 LTS.
Создайте среду разработки приложений
Установить JRE
Eclipse полагается на среду Java, поэтому сначала необходимо установить JRE или JDK.
Установка Затмение и CDT
идти с Официальный сайт Eclipse Загрузите последнюю версию Eclipse IDE。
Обычно мы выбираем версию C / C ++ ( Eclipse IDE для разработчиков C / C ++), эта версия поставляется с CDT, отдельно устанавливать не нужно Плагин CDT. Выберите версию Linux при загрузке, например: eclipse-cpp-juno-linux-gtk.tar.gz
Загрузите сжатый пакет напрямую ( eclipse-cpp-juno-linux-gtk.tar.gz) распаковать в каталог и запустить исполняемый файл затмение может.
Бегать После затмения вы можете сделать это сначала Eclipse использует конфигурацию рабочего пространства среды.
Создавайте кросс-прикладные проекты
В Щелкните меню Файл> Создать> Проект C / C ++ в главном интерфейсе Eclipse и введите имя проекта во всплывающем диалоговом окне «Проект C / C ++». Выберите тип проекта (например, Executable / Empty Project), в Toolchains вы должны выбрать Cross GCC, который Поддержка CDT кросс-среды предоставляет дополнительные функции для облегчения разработки встроенных приложений.
Нажмите Далее, чтобы перейти на страницу «Выбор конфигураций», мы используем значение по умолчанию, перейдите к следующему шагу непосредственно к настройке «Перекрестная команда GCC». Здесь мы можем заполнить Цепочка инструментов кросс-компиляции и путь, например:
Ситуация в приведенном выше примере заключается в том, что мы установили пакет кросс-компиляции, предоставленный поставщиком чипа ARM. Вообще говоря, поставщики микросхем предоставляют такую среду кросс-компиляции, включая цепочку инструментов компиляции целевой платформы, библиотеку Glibc, бинарные инструменты и другие часто используемые инструменты. Приведенный выше пример — это путь установки и программный префикс комплекта разработчика DM3730, предоставленного TI (настоящая программа: arm-arago-linux-gnueabi-gcc, arm-arago-linux-gnueabi-ld и т. Д.)
Наконец, нажмите «Готово», и перекрестный проект будет создан. Что касается настроек префикса и пути кросс-компиляции, после создания проекта вы можете изменить их в свойствах проекта.
Здесь мы пишем простую тестовую программу, например:
Щелкните Build, чтобы скомпилировать его. После компиляции мы можем увидеть скомпилированную программу в двоичных файлах в каталоге проекта в «Project Explorer» слева. Скопируйте его на целевую плату разработки ARM, запустите, и результат будет правильным.
Запустить и отладить
После того, как программа скомпилирована в двоичный код целевой платформы, возникает проблема, как скопировать ее на целевую плату для отладки.
Мы можем загрузить скомпилированную программу на целевую плату через TFTP, то есть установить сервер TFTP на узле разработки и использовать команду tftp для извлечения файлов с узла на целевой плате.
Другой удобный способ — развернуть службу NFS на узле разработки, экспортировать общий каталог, а затем использовать команду mount на целевой плате для локального монтирования общего каталога на узле разработки. Таким образом, хост разработки и целевая плата используют один и тот же каталог, поэтому нет необходимости загружать программы постоянно. Развертывание NFS может относиться к«Использование общего каталога NFS в Linux»。
Окончательное решение — создать среду онлайн-отладки для графического интерфейса пользователя, то есть после написания кода нажмите кнопку «Отладка», Eclipse автоматически компилирует программу, затем загружает программу на целевую плату, а затем запускается, чтобы открыть отладку GDB в режиме онлайн, так что вы можете выполнять пошаговую отладку, как при отладке локальной программы.
Создайте среду онлайн-отладки
Общее введение gdb + gdbserver
Среда удаленной отладки состоит из хоста GDB и целевой отладочной заглушки, которые подключены через последовательный порт или TCP. Используйте стандартный программный последовательный протокол GDB для совместной работы, чтобы реализовать функции мониторинга и отладки ядра системы и верхнего приложения на целевой машине. Отладочная заглушка — это часть кода во встроенной системе, которая существует как посредник между главным GDB и целевым отладчиком.
На данный момент во встроенных системах Linux существует три основных метода удаленной отладки, которые подходят для отладки в различных ситуациях:
Основное различие между этими тремя методами отладки состоит в том, что заглушка удаленной отладки целевой машины существует в разных формах, а идеи проектирования и методы реализации примерно одинаковы.
И чаще всего мы используем для отладки приложения. Для отладки используется gdb + gdbserver. Во многих случаях пользователям необходимо многократно отлаживать приложение, особенно сложные программы. Для отладки используется метод GDB. Из-за ограниченных ресурсов встроенной системы, как правило, отладка напрямую в целевой системе невозможна. Обычно используется метод отладки gdb + gdbserver.
Исходный код скачать
Среда отладки GDB встроенного Linux состоит из Host и Target: Host использует arm-linux-gdb, а Target Board использует gdbserver. Таким образом, приложение запускается во встроенной целевой системе, а отладка gdb выполняется на стороне хоста, поэтому необходимо использовать метод удаленной отладки (удаленный). Для отладки GDB целевая система должна включать программу gdbserver (на главном компьютере она должна быть загружена на целевой компьютер после успешной компиляции аппаратной платформы), а на главном компьютере также должна быть установлена программа GDB. Как правило, есть GDB, который может работать в дистрибутиве Linux, но разработчики не могут напрямую использовать GDB в дистрибутиве для удаленной отладки, но для получения пакета исходного кода GDB, сделать простую конфигурацию для платформы arm и перекомпилировать ее. Соответствует GDB. Пакет исходного кода GDB можно скачать сОфициальный сайт GNUСкачать.
Компиляция и установка конфигурации
Еще раз, набор удаленной отладки GDB включает gdb на стороне хоста и gdbserver на стороне цели. Для gdb нельзя использовать версию gdb для ПК, которая поставляется с версией выпуска на хост-машине. Она не имеет поддержки отладки, связанной с целевой архитектурой (ARM). Поэтому мы должны использовать исходный код gdb для компиляции специальной версии (toolchain или Host) для платформы ARM. Конечно, если комплект для кросс-компиляции, предоставляемый поставщиком чипа, уже включает arm-linux-gdb, нам не нужно перекомпилировать gdb, просто используйте его напрямую. В любом случае gdbserver все равно необходимо перекомпилировать с набором инструментов целевой платы, потому что комплект для кросс-разработки, предоставляемый поставщиками микросхем, обычно не включает gdbserver.
После скачивания разархивируйте:
Создайте файл конфигурации и скомпилируйте:
В приведенной выше команде -target настраивает целевую платформу gdb, а -prefixp указывает место хранения результатов компиляции, то есть каталог установки. После компиляции вы можете найти исполняемые файлы arm-linux -gdb, arm-linux -gdbtui, arm-linux-run в каталоге / opt / arm-gdb / bin. Скопируйте arm-linux-gdb в каталог / usr / bin:
Затем перенесите gdbserver на платформу ARM. Главное — указать цепочку кросс-компиляции (gcc и ar) целевой платформы. Мы создаем временную директорию компиляции, чтобы не испортить исходный код.
В приведенной выше команде –target = arm-linux означает целевую платформу, –host означает, что на хосте работает arm-linux-gdb, и нет необходимости настраивать –prefix, поскольку gdbserver не установлен на хосте. Временные переменные среды CC и AR используются для указания параметров кросс-компиляции и сборки, которые будут применяться, когда configure выполняется в одной строке команд.
Если ошибки нет, сгенерируйте исполняемый файл gdbserver в каталоге / home / kim / gdb-build. Обратите внимание, что вы должны изменить его атрибуты в это время, иначе он может быть недоступен. Chmod 777 gdbserver изменит его, чтобы любой мог прочитать Записать и выполнить; используйте команду arm-linux-strip для обработки gdbserver, удалите избыточную информацию о символах, что может сделать файл elf более оптимизированным, обычно используется в окончательной версии приложения; затем запишите его в раздел корневой файловой системы флэш-памяти / Usr / bin (в этом каталоге система может автоматически найти приложение, в противном случае вы должны запустить его в каталоге, где расположен gdbserver) или через nfs mount. Просто убедитесь, что gdbserver может работать на плате разработки.
После компиляции gdbserver скопируйте его в каталог / usr / bin на целевой плате и запустите. Если отображается справочное сообщение, кросс-компиляция прошла успешно, например:
Если он запрашивает другие сообщения об ошибках, например, двоичный файл не может быть выполнен, это означает, что компиляция не удалась. Обратите внимание, что gdbserver, который мы скомпилировали, не может работать на хосте разработки.
Удаленная отладка из командной строки
На целевой плате запустите команду gdbserver, чтобы начать отладку тестовой программы, и укажите IP-адрес и номер порта прослушивания целевой платы, например:
Мы видим, что gdbserver запустился нормально и ожидает подключения клиентской программы gdb.
На этом этапе мы запускаем arm-linux-gdb на хосте разработки, указываем IP-адрес и порт gdbserver и подключаемся к нему, например:
Отображение «0x400b57f0 в ?? ()» означает, что он подключился к удаленному gdbserver и начал отладку. В это время на целевом терминале платы будет отображаться «Удаленная отладка с хоста 192.168.188.201», еще раз подтвердите, что подключение для удаленной отладки успешно. Следующий метод отладки такой же, как и в обычном встроенном gdb.
Графическая удаленная отладка CDT + GDB
Мы можем напрямую использовать arm-linux-gdb для удаленной отладки приложения, но интерфейс командной строки действительно недостаточно дружелюбен. Здесь мы находим способ На Eclipse через CDT использует GDB для удаленной онлайн-отладки.
в Выберите проект в Eclipse, щелкните меню «Выполнить»> «Конфигурации отладки», найдите «Удаленное приложение C / C ++» в типе Dubug слева, щелкните правой кнопкой мыши и выберите «Создать», чтобы создать конфигурацию удаленной отладки, как показано ниже:
Если установлено Плагин CDT не завершен, может не быть типа «Удаленное приложение C / C ++», что означает CDT не имеет функции удаленной отладки. В настоящее время вам необходимо установить надстройку под названием «Среда выполнения конечного пользователя удаленного системного обозревателя». Чтобы узнать, как установить его, обратитесь к:How do I debug a remote application?。
Плагин C / C ++ для Eclipse CDT уже поддерживает gdb для удаленной отладки. При отладке приложения CDT имеет три режима работы:
В диалоговом окне «Конфигурации отладки» создайте конфигурацию удаленной отладки. Эта конфигурация предоставит конфигурацию по умолчанию в соответствии с ситуацией в проекте при ее создании. По умолчанию будет использоваться первый метод автоматического удаленного запуска. Он находится внизу вкладки «Основные» «GDB (DSF) Можно увидеть «Средство запуска автоматической удаленной отладки», нажмите «Выбрать другое . » справа, чтобы переключить другие методы.
Удаленный ручной режим работы
мы надеемся Каждый раз, когда Eclipse создает проект, он автоматически копирует сгенерированную двоичную программу на целевую плату. Это может быть достигнуто путем монтирования общего каталога через NFS. Нам нужно только настроить свойства проекта (разверните по порядку: C / C ++ Build> Settings > Этапы сборки> Действия после сборки, введите «cp ProgramBin / mnt / share» в команде).
Затем запустите gdbserver на целевой плате, если тестовая программа HelloDm3730 была загружена в текущий каталог, например:
После запуска службы GDB целевой платы мы можем щелкнуть по хосту разработки. Кнопка отладки Eclipse (укажите только что настроенную конфигурацию отладки), чтобы начать удаленную отладку приложения. Мы можем видеть стандартный вывод программы в терминале, подключенном к целевой плате; мы также можем видеть здесь стандартный ввод.
Когда мы закончим отладку, процесс gdbserver на целевой плате автоматически завершится. Если мы хотим снова отладить после изменения кода, нам все равно нужно запустить gdbserver на целевой плате, что будет очень хлопотно, но, в конце концов, мы можем выполнить удаленную графическую отладку.
Удаленная автоматическая работа и отладка
Мы хотим просмотреть системный статус целевой платы (удаленного хоста) на хосте разработки, например, просмотр удаленных файлов, просмотр списков процессов и т. Д., И даже открытие терминала для запуска программ на удаленном компьютере. Мы также надеемся, что такое программное обеспечение может быть интегрировано в Eclipse и предоставляет интерфейс API для Плагины Eclipse могут вызывать программы на удаленных машинах.
TM / RSE является таким инструментом, его полное название — Target Management / Remote Systems Explorer, что является Плагин для Eclipse. Для Eclipse существует множество подключаемых модулей удаленного управления, но этот наиболее часто используется, поэтому мы его установили. Версия Eclipse для C ++ поставляется с этим подключаемым модулем. Среда разработки программного обеспечения ARM DS-5 также использует этот плагин. Фактически, в основе всего DS-5 лежит Создано на основе программного обеспечения с открытым исходным кодом от сообщества Eclipse. Для получения дополнительной информации о TM / RSE, пожалуйста, обратитесь к его официальной информации:TM and RSE FAQ
Устанавливаем TM / RSE В Eclipse нажмите кнопку «Открыть перспективу» в верхнем правом углу, чтобы открыть «Удаленный системный обозреватель». В удаленном системном обозревателе вы можете легко управлять несколькими удаленными подключениями, просматривать удаленные файлы и процессы и запускать удаленные программы.
RSE поддерживает множество типов сетевых подключений, среди которых наиболее часто используются:
Поддержка подключения к хосту Unix / Linux / Windows и локальному. Чтобы подключиться к удаленному компьютеру на узле разработки, необходимо сначала установить и запустить службу удаленного управления на удаленном компьютере, например службу Telnet, службу FTP и службу SSH. Если файловые службы (например, FTP, SFTP) и службы оболочки (например, SSH, Telnet) установлены на удаленном узле, вы можете установить их на локальном узле разработки, CDT может вызвать интерфейс API RSE для копирования сгенерированной целевой программы на удаленный конец и запустить gdbserver на удаленной целевой плате, чтобы достичь функции автоматической загрузки и отладки программы.
Процесс вызова CDT интерфейса API RSE для реализации удаленной отладки можно разбить на:
Первый шаг выше не является необходимым, мы можем сделать это другими способами, например, смонтировать файловую систему NFS на целевой плате и позволить хосту разработки (также монтирующему ту же файловую систему NFT) выполнить команду копирования после компиляции. Да, это можно настроить в параметрах компиляции проекта. Следует отметить, что если вы хотите проигнорировать этот шаг, вы также должны установить флажок «Пропустить загрузку по целевому пути» в конфигурации отладки проекта. CDT не будет пытаться открыть интерфейс файловой службы каждый раз, когда запускает отладку.
Для удобства мы все еще надеемся, что целевая плата может одновременно предоставлять файловую службу и службу Shell. У нас есть два варианта:
Эти две схемы будут представлены ниже по отдельности.
Вариант 1. Скомпилируйте и разверните OpenSSH
Вариант 2: скомпилировать и развернуть Dropbear и vsFTP
Поскольку ресурсы целевой платы ограничены, развертывание служб Telnet / FTP / SSH на целевой плате может быть затруднительным. К счастью, сообщество Linux всегда открыто.У нас слишком много вариантов, таких как DropBear или OpenSSH для SSH, vsftpd для FTP. Если наша целевая плата уже находится в одной из этих служб, с ней легко работать, просто подключитесь напрямую; если целевая плата не имеет этих служб, мы должны скомпилировать и развернуть себя — используйте кросс-компилятор для компиляции целевой платформы Программа, затем разверните и настройте ее. Здесь мы используем Dropbear для развертывания службы SSH. Dropbear зависит от библиотеки zlib, поэтому, если на целевой плате нет libz.so, вам придется скомпилировать его самостоятельно.
Загрузите последнюю версию zlib и dropbear из Интернета. Я скачал следующие версии: dropbear-2012.55.tar.gz и zlib-1.2.7.tar.gz.
Базовый процесс компиляции: распаковка, настройка, компиляция и установка. Мы можем указать в ./configure Инструмент кросс-компиляции.
Для zlib мы указываем путь установки как
/ soft / install, чтобы после make install make скопировала и установила скомпилированную программу в этот каталог, чтобы мы могли получить программу. Такие как:
После «установки» файл общей библиотеки (так что) можно будет найти в lib нашего назначенного каталога
/ soft / install /, что нам нужно: libz.so libz.so.1 libz.so.1.2.7
Для Dropbear нам нужно указать ranlib и удалить больше, а также указать целевую платформу как arm-linux. Путь установки должен использовать абсолютный путь, хотя мы не устанавливаем его. Такие как:
После компиляции вы можете увидеть нужные нам программы в текущем каталоге:
Скопируйте три файла zlib (libz.so libz.so.1 libz.so.1.2.7, первые два — файлы подключения) в / usr / lib на целевой плате; скопируйте четыре программы, созданные dropbear, в В каталоге / usr / sbin целевой платы.
Затем (на целевой плате) создайте файл конфигурации для генерации ключей, необходимых для SSH, например:
Наконец запустите службу:
Лучше всего установить пароль для пользователя целевой платы. Затем на машине разработки сначала протестируйте нашу службу SSH:
Если вы вводите правильный пароль, но всегда безуспешно входите в систему (приглашение терминала на целевой плате: пользовательский root имеет недопустимую оболочку, отклонено), это может быть связано с тем, что для учетной записи root не установлена правильная оболочка входа. Как и большинство программ, Dropbear позволяет входить в систему только пользователям, перечисленным в / etc / passwd, и пользователю необходимо установить правильную оболочку (/ bin / sh или / bin / csh) в / etc / passwd. Некоторые busybox используют / bin / bash, поэтому Dropbear отклоняет их. После того, как мы используем здесь / bin / sh, мы сможем войти в систему как обычно.
vsFTP не был успешно скомпилирован, и в нем нет инструмента настройки.
использовать CDT удаленная отладка
Теперь оглядываясь назад Удаленная отладка CDT. Допустим, мы выполнили следующую работу:
Сначала мы должны создать соединение в Remote System Explorer, чтобы RSE мог подключиться к целевой машине и управлять целевой машиной. Затем в Debug Configurations проекта создайте конфигурацию «C / C ++ Remote Application». На вкладке Main Connection выбирает соединение, установленное на RSE, а затем вводит путь, в котором хранится удаленная программа. Этот путь содержит последнюю программу Имя файла не является каталогом. Примечание. Если файловая служба (SFTP или FTP) не развернута на удаленном конце, вам необходимо установить флажок «Пропустить загрузку по целевому пути», поэтому CDT не будет пытаться открыть интерфейс файловой службы каждый раз при запуске отладки, что приведет к сбою отладки. Но после установки флажка «Пропустить загрузку по целевому пути» должен быть способ скопировать последнюю версию программы по только что указанному пути удаленной программы, например, каждый раз копировать вручную или вводить автоматическое копирование на этапах после сборки в конфигурации проекта. Команда для автоматического копирования проекта на целевую машину после каждой компиляции.
Справка
Самый изысканныйизучениеu-boot, компиляция, использовавшаяся ранееметодВwindowВ разделе s используйте vs, чтобы продолжить, затем используйтевиртуальная машинаСкомпилируйте ubuntu, используйте в серединеобщийфайлпапка. Позже я подумал, что это слишком хлопотно, поэтому сразу пошелlinuxОпускатьсямодифицироватьИ скомпилирован, так установленEclipse forРазработчик C / c ++. Вот два способа создать среду кросс-компиляции:
1. Используйте Makefile, поставляемый с проектом.
1.ВыбратьNew-> Project вместо Import
2. Затем выберите Makefile Project с Exist.ing Code
3. Затем введите название проекта в поле Project Name.
4. Наконец, вы можете напрямую «Собрать все» или «Собрать проект».
2. ПринятьIDEАвтоматически создавать Makefile
1. Также выберите «Новый проект»,ноЗатем выберите C Project вместо Makefile Project с существующим кодом.
2. Здесьвойтиназвание проекта,ГарантияТо же, что и имя папки проекта в рабочей области. Выберите проект кросс-компиляции в типе проекта ниже
3. Затем щелкните проект правой кнопкой мыши и выберите «Свойства».
4. Выберите C / C ++ Build-> Settings. вTool SettingsэтикеткаВыберите Cross Settings в столбце. Затем введите префикс, например powerpc-linux-gnu- в Prefix, а затем заполните цепочку инструментов в Pathпуть, Все нормально!
Хорошо, сюдаможетКросс-скомпилирован под мощной IDE Eclipse.
После периода исследований я, наконец, настроил среду разработки arm на основе Eclipse под Linux и сделал некоторые заметки для будущего обзора.
Arm-linux-gcc-3.4.1.tar.bz2 (инструмент кросс-компиляции, доступный в Интернете, вы можете перекомпилировать, если вам интересно)
Jdk-6u21-linux-i586.bin (на самом деле здесь должно быть достаточно jre, установите jdk на случай, если вам понадобится разрабатывать java-программы в будущем)
(2) Скопируйте каталог arm по пути usr / local в / usr / local в вашей собственной системе;
cd ./usr/local $ sudo mv arm /usr/local
(3) Измените переменные среды и добавьте путь кросс-компилятора в PATH. (Есть три метода, настоятельно рекомендую первый, не знаю почему, я сказал об этом в Интернете)
Способ 1. Измените файл /etc/bash.bashrc Добавьте в конце: $ sudo vi /etc/bash.bashrc Экспорт PATH = $ PATH: /usr/local/arm/3.4.1/bin (обратите внимание, что перед знаком равенства и после него не может быть пробелов, то же самое ниже)
export PATH Метод 2: Измените файл / etc / profile: (После тестирования выяснилось, что метод 2 необходимо перезапустить. Если используется источник, изменение терминала будет недопустимым) Добавьте настройку пути, в конце добавьте следующее: $ sudo vi / etc / profile export PATH=$PATH:/usr/local/arm/3.4.1/bin Метод 3: #export PATH = $ PATH: /usr/local/arm/3.4.1/bin Примечание: (Это действительно только для текущего терминала!)
Резюме: Давайте использовать здесь второй метод. Первый метод не может быть идентифицирован Eclipse — 2010-10-10 9:47
(4) После сохранения изменений в профиле выполните исходный код /etc/bash.bashrc, и все будет в порядке.Эта команда может немедленно заставить новую переменную среды вступить в силу без перезагрузки компьютера;
Используйте $ echo $ PATH, чтобы проверить, добавлен ли путь в PATH