Если вы можете убедить системного администратора установить библиотеки (X-сервер не требуется), вы можете использовать перенаправление X с SSH, что позволит вам удаленно запускать X-приложения и запускать их на локальном сервере. Если вы используете Linux локально, возможно, у вас уже запущен X, а если вы используете Windows, вы можете использовать сервер Xming (с небольшой настройкой, чтобы он мог принимать удаленные подключения). Для отладки, если вам нужна отдельная оболочка, просто установите другой экземпляр SSH и выполните отладку из другого процесса.
Что касается переносимости, это зависит от того, что вы пытаетесь сделать. Если все, что вам нужно, это простое консольное приложение, вы не должны сталкиваться с какими-либо серьезными проблемами переносимости. Если вы используете более сложный код, переносимость сильно зависит от двух вещей. Во-первых, это выбор библиотек - конечно, вы можете запускать приложения, написанные для Win32 на Linux с Wine, или даже скомпилировать их с Winelib, но это не очень приятный опыт. Если вы выберете что-то более портативное, например Qt или gtkmm, вам будет намного легче. Аналогично для кода файловой системы - использование библиотеки, такой как Boost.Filesystem, значительно упростит задачу. Второе, что имеет большое значение для мобильности, это следуйте документации . Сложно подчеркнуть это достаточно - многие вещи, которые вы делаете неправильно, будут иметь разные результаты на разных платформах, особенно если вы используете библиотеки, которые не выполняют проверки (примечание: по этой причине я настоятельно рекомендую сверять код с отладочными стандартными библиотеками). Однажды я провел почти слабое отслеживание ошибки переносимости, которая возникла из-за того, что кто-то не читал документы и передавал неверный параметр.