У меня есть следующие коробки:
- Коробка Windows с Eclipse CDT,
- Коробка Linux, доступная для меня только через SSH.
И компилятор, и оборудование, необходимое для сборки и запуска моего проекта, находятся только на компьютере B.
Я хотел бы работать "прозрачно" из окна Windows в этом проекте с помощью Eclipse CDT и иметь возможность создавать, запускать и отлаживать проект удаленно из среды IDE.
Как мне это настроить:
- Здание будет работать? Какие-нибудь более простые решения, чем написание локального make-файла, который запустил бы
rsync
проект, а затем вызвать удаленный make-файл, чтобы инициировать фактическую сборку? Есть ли в Eclipse управляемая сборка такая возможность? - Отладка будет работать?
- Желательно - Eclipse CDT code indexing будет работать? Нужно ли копировать все необходимые файлы заголовков с компьютера B на компьютер A и добавлять их вручную, чтобы включить путь?
rsync
на упоминается.Ответы:
Попробуйте удаленный системный обозреватель (RSE). Это набор плагинов, чтобы делать именно то, что вы хотите.
RSE уже может быть включен в вашу текущую установку Eclipse. Для проверки в Eclipse Indigo перейдите в « Окно» > « Открыть перспективу» > « Другие» и выберите « Удаленный системный обозреватель» в диалоговом окне « Открыть перспективу », чтобы открыть перспективу RSE.
Чтобы создать удаленный проект SSH с точки зрения RSE в Eclipse:
Если все сделано правильно, теперь должен быть новый удаленный проект, доступный из Project Explorer и других ракурсов затмения. При правильной настройке соединения SSH пароли могут стать дополнительной частью обычного процесса аутентификации SSH. Удаленный проект с Eclipse через SSH теперь создан.
источник
Самый простой способ - запустить Eclipse CDT на Linux Box и использовать программное обеспечение X11-Forwarding или программное обеспечение для удаленного рабочего стола, такое как VNC.
Это, конечно, возможно только в том случае, если Eclipse присутствует на компьютере с Linux и ваше сетевое подключение к устройству достаточно быстрое.
Преимущество состоит в том, что из-за того, что все локально, у вас не будет проблем с синхронизацией, и у вас не будет никаких неловких кроссплатформенных проблем.
Если у вас нет затмения на коробке, вы можете подумать о том, чтобы поделиться своим рабочим каталогом linux через SMB (или SSHFS) и получить к нему доступ с вашего компьютера с Windows, но это потребует некоторых настроек.
Оба были бы лучше, чем иметь две копии, особенно когда это кроссплатформенный.
источник
DISPLAY
переменную, чтобы Eclipse знал, где находится сервер.Я сам в том же месте (или был), FWIW. Я закончил тем, что проверял общий ресурс samba на хосте Linux и редактировал этот локальный ресурс на машине Windows с помощью notepad ++, затем я компилировал его на Linux с помощью PuTTY. (Нам не разрешалось обновлять десять версий редакторов на хосте Linux, и у него не было Java, поэтому я отказался от пересылки X11)
Теперь ... Я запускаю современный Linux в виртуальной машине на своем хосте Windows, добавляю все необходимые инструменты (например, CDT) к виртуальной машине, а затем извлекаю и встраиваю в chroot-тюрьму, которая очень похожа на RTE.
Это неуклюжее решение, но я подумал, что добавлю его в микс.
источник
Мое решение похоже на SAMBA, за исключением использования sshfs. Смонтируйте мой удаленный сервер с помощью sshfs, откройте мой проект makefile на удаленной машине. Иди оттуда.
Кажется, я тоже могу запустить интерфейс с графическим интерфейсом для Mercurial.
Создать мой удаленный код так же просто, как: ssh address remote_make_command
Я ищу достойный способ отладки, хотя. Возможно через gdbserver?
источник
У меня была такая же проблема 2 года назад, и я решил ее следующим образом:
1) Я создаю свои проекты с помощью make-файлов, не управляемых Eclipse. 2) Я использую соединение SAMBA для редактирования файлов в Eclipse. 3) Создание проекта: Eclipse вызывает «локальное» создание с помощью Make-файла, который открывает SSH-соединение с Linux. Хост. В командной строке SSH вы можете указать параметры, которые выполняются на хосте Linux. Для этого параметра я использую скрипт оболочки makeit.sh, который вызывает «реальный» make на хосте linux. Различные цели для сборки вы можете также указать с помощью параметров из локального файла makefile -> makeit.sh -> makefile на хосте Linux.
источник
Я пытался,
ssh -X
но это было невыносимо медленно.Я также попробовал RSE, но он даже не поддерживал создание проекта с Makefile ( мне говорят, что это изменилось с тех пор, как я опубликовал свой ответ , но я не пробовал это)
Я читал, что NX быстрее, чем X11, но я не смог заставить его работать.
Наконец, я обнаружил, что мой сервер поддерживает X2Go (ссылка содержит инструкции по установке, если у вас нет). Теперь мне осталось только:
sudo apt-get install x2goclient
на Ubuntu),Все так же, как если бы я работал на локальной машине, включая сборку, отладку и индексацию кода. И нет никаких заметных лагов.
источник
В этом случае вы можете использовать ptp eclipse https://eclipse.org/ptp/ для просмотра и построения исходного кода.
Вы можете использовать эту заглушку для отладки вашего приложения
http://marketplace.eclipse.org/content/direct-remote-c-debugging
источник
Этот ответ в настоящее время относится только к использованию двух компьютеров Linux [или, может быть, работает на Mac тоже? - не тестировался на Mac] (синхронизация от одного к другому), потому что я написал этот скрипт синхронизации в bash. Однако это просто оболочка
git
, поэтому вы можете взять его и преобразовать в кроссплатформенное решение Python или что-то еще, если хотитеЭто не дает прямого ответа на вопрос ОП, но оно настолько близко, что я гарантирую, что оно ответит на вопрос многих других людей, которые попадают на эту страницу (включая мой, на самом деле, поскольку я пришел сюда прежде, чем написать свое собственное решение), поэтому я Выкладываю это здесь в любом случае.
Я бы хотел:
Давайте назовем первый компьютер, на котором я пишу код «PC1» (персональный компьютер 1), а второй компьютер, на котором я создаю код «PC2». Мне нужен инструмент для простой синхронизации с ПК1 на ПК2. Я пытался
rsync
, но это было безумно медленно для больших репозиториев и занимало тонны пропускной способности и данных.Итак, как мне это сделать? Какой рабочий процесс я должен использовать? Если у вас есть этот вопрос, вот рабочий процесс, который я решил. Я написал скрипт bash для автоматизации процесса с помощью
git
автоматической отправки изменений с ПК1 на ПК2 через удаленный репозиторий, такой как github. Пока это работает очень хорошо, и я очень доволен этим. Это намного намного быстрее, чемrsync
, на мой взгляд, заслуживает большего доверия, потому что каждый ПК поддерживает функциональное git-репо и использует гораздо меньшую полосу пропускания для выполнения всей синхронизации, поэтому его легко выполнить по горячей точке мобильного телефона без использования тонны ваших данных.Настроить:
Установите скрипт на ПК1 (это решение предполагает, что ~ / bin находится в вашем $ PATH):
Теперь отредактируйте файл "~ / .sync_git_repo", который вы только что скопировали выше, и обновите его параметры в соответствии с вашим случаем. Вот параметры, которые это содержит:
Git клонировать репо, который вы хотите синхронизировать как на ПК1, так и на ПК2.
Теперь
cd
в любой каталог в git-репо на ПК1 и запустите:Это оно! Примерно через 30 секунд все будет магически синхронизировано с ПК1 на ПК2, и он будет выводить на печать все время, чтобы сообщить вам, что он делает, и где он это делает на вашем диске и на каком компьютере. Это также безопасно, потому что он не перезаписывает и не удаляет все, что не передано. Вместо этого он сначала поддерживает это! Читайте больше ниже о том, как это работает.
Вот процесс, который использует этот скрипт (т.е. что он на самом деле делает)
rsync
копирует сценарий на ПК2 иssh
вызывает ПК2, чтобы он запускал сценарий со специальной опцией, просто выполняющей действия на ПК2.cd
входит в репозиторий и проверяет, существуют ли какие-либо локальные незафиксированные изменения. Если это так, он создает новую резервную ветвь, разветвленную из текущей ветви (имя образца:my_branch_SYNC_BAK_20200220-0028hrs-15sec
<- обратите внимание, что это ГГГГММДД-ЧЧММчс - SSsec), и фиксирует любые незафиксированные изменения в этой ветви с сообщением фиксации, например DO BACKUP OF ALL НЕОГРАНИЧЕННЫЕ ИЗМЕНЕНИЯ НА ПК2 (ЦЕЛЬ ПК / СТРОИТЕЛЬНАЯ МАШИНА), Теперь он проверяет ветку SYNC, извлекая ее из удаленного хранилища, если она еще не находится на локальной машине. Затем он извлекает последние изменения в удаленном репозитории и выполняет полный сброс, чтобы заставить локальный репозиторий SYNC соответствовать удаленному репозиторию SYNC. Вы могли бы назвать это «жестким натяжением». Однако это безопасно, потому что мы уже создали резервные копии любых незафиксированных изменений, которые мы имели локально на ПК2, поэтому ничего не потеряно!Ресурсы:
Связанный:
источник