Переносимое приложение
Переносимое приложение (англ. portable application, portable app ) — программное обеспечение, которое для своего запуска не требует процедуры инсталляции на жесткий диск компьютера, и может полностью храниться на съемных носителях информации, таких как CD-ROM, USB flash drive, флэш-картах и даже на дискете, что позволяет использовать данное ПО на многих компьютерах. Такое приложение в идеале может быть настроено так, чтобы считывать свои конфигурационные настройки во время запуска из того же места, где хранятся его собственные программные файлы.
Это однако не подразумевает, что переносимое ПО независимо от операционной системы, типа процессора или различного аппаратного обеспечения. Не стоит путать данный термин с портируемым ПО, которое подразумевает возможность перекомпиляции и запуска программы после незначительных изменений на отличной от исходной компьютерной платформе.
Некоторые разработчики поставляют переносимые версии своих программных продуктов или продуктов с открытым исходным кодом. Для создания переносимого ПО, исходный код которого недоступен, существуют коммерческие решения, например VMware ThinApp.
Примеры переносимых приложений
Ссылки
Полезное
Смотреть что такое «Переносимое приложение» в других словарях:
VMware ThinApp — Разработчик Jitit Inc. (до 15 января 2008 года[1]), VMware (по сей день) Операционная система Microsoft Windows: NT 4.0, 2000, XP (x86, x64), Vista (x86, x64), Server 2003, Server 2008 (x64), Server 2008 R2 (x64) и … Википедия
U3 — У этого термина существуют и другие значения, см. U3 (значения). В данной статье или разделе имеется список источников и … Википедия
Netpbm — Тип пакет графических программ и библиотека Разработчик Bryan Henderson Написана на C, Perl, Unix Shell Операционная система Linux и др. UNIX подобные, Windows Первый выпуск май 2000 … Википедия
АРИСТОТЕЛЬ — Стагирит [греч. ̓Αριστοτέλης Σταγειρίτης], философ, ученый энциклопедист. Биографические сведения Род. в 385/84 г. до Р. Х. в греч. г. Стагира на вост. побережье п ова Халкидика в семье Никомаха, врача из рода, возводимого к богу врачевания… … Православная энциклопедия
Что такое переносимая программа
Технологии шагнули очень далеко вперед
Программа для переноса
Программа для переноса
Как перенести установленную программу с одного компьютера на другой
Мы уже много раз писали о том, как сохранить и восстановить пользовательские данные. Действительно, утеря годами собираемого фотоархива, музыкальной коллекции или важного текста может быть настоящей катастрофой. Однако, мало кто знает как сохранить свое удобное рабочее окружение, а именно установленное на вашем компьютере программное обеспечение. Программа PickMeApp предлагает нам возможность архивировать установленные на вашем компьютере программы, а потом восстановить их точно в таком же виде, то есть со всеми настройками, на другой системе.
По заверениям разработчиков программы их детище может совладать с 98% программного обеспечения, начиная от простых утилит и до сложных программных комплексов. В описании программы заявлена способность переноса программ не только между одинаковыми системами, но и между разными версиями Windows.
Принцип работы PickMeApp очень прост. После запуска программы мы видим окно с двухпанельным интерфейсом. В правой части находится список установленных в вашей системе программ. Отмечаем нужный элемент галочкой и жмем кнопку в середине Capture marked application. После непродолжительного или наоборот длительного, в зависимости от размера выбранного приложения, шуршания диском, выбранное ПО появляется в правом списке. В результате этого процесса программа будет запакована в один файл в формате TAP, который сохраняется в той папке куда вы установили PickMeApp.
После того, как вы запаковали все нужные программы, можно взять и перенести папку в другую систему. Там достаточно просто запустить программу и отметить в правой панели те программы, которые нужно восстановить. После нажатия кнопки Install возле выбранного элемента, нужная софтина обоснуется в новой системе в точно таком же виде как она выглядела раньше.
Программа PickMeApp может пригодиться вам в том случае, если понадобится перенести программное обеспечение при переустановке системы или покупке нового компьютера. Может заинтересовать эта утилита и системных администраторов, которым приходится устанавливать один и тот же софт на множество компьютеров, а потом производить одинаковые настройки. И уж просто незаменимым будет этот инструмент для тех людей, которые используют какое-либо эксклюзивное или раритетное ПО, к которому и инсталляторов-то не найдешь.
Перенести программу на другой ПК. Сделать portable версию программы.
Разработчики программного обеспечения постоянно упрощают работу с программами, но их установка занимает много времени и является очень утомительным процессом. Вот почему, вопрос, как перенести программу на ПК в рабочем состоянии, волнует пользователей.
Перенос программ с одного компьютера на другой может пригодиться в таких случаях:
• нужно переустановить Windows;
• хотите купить новый ПК и перенести туда уже используемые ранее программы;
• нужно заменить винчестер (жесткий диск), не потеряв нужные данные.
Проше всего сделать перенос программы на другой компьютер через PickMeApp.
Перенос программ с помощью PickMeApp.
Самый легкий и доступный продукт для переноса установленных программ, это приложение PickMeApp.
1. Приложение можно скачать с нашего сайта.
2. Установить утилиту довольно легко. Но есть несколько но, во время установки выберите установку в диск Ц, папку Program Files и например папку port (вот так будет выглядеть путь C:\Program Files\Port). Также во время установки будет предложено установить еще 3 программы которые могут быть вам не нужны. В серых окошках с текстом нажать кнопку Decline 3 раза. Если вы этого не сделаете будет установлены Опера, Uninstaller и RegCleaner!
3. PickMeApp работает только на английском языке, но все понятно и так, в работе с PickMeApp. Если есть вопросы, просто внимательно читайте данную инструкцию. Все приложения, которые установлены на вашем компьютере, программа рассортирует по двум папкам: Qualified Applications и Nonqualified Applications (те которые можно перенести и те которые нет). Можно перенести приложения только из первой папки Qualified Applications. Большой минус программы — это возможность переноса не всех программ:
4. Ставим галочки возле нужной программы и жмем «Capture» для перемещения.
5. Дождитесь окончания копирования и жмите кнопку «Save As Exe» в правой части окна:
6. Все файлы программ будут сохранены в папке PickMeApp/TAPPS:
7. Копируем их на флешку или винчестер. Устанавливаем на другом компьютере утилиту PickMeApp и запускаем выбранные программы:
8. Вот и все перенос завершен.
Нужно обязательно обратить внимание перед переносом программы на другой компьютер:
• перенос программ можно выполнить, только от имени администратора;
• при использовании даже платных приложений крупное программное обеспечение типа Microsoft Office, не будет работать после перемещения;
• вместе с файлами вы можете переместить вирусы и зараженные файлы, расположенные в копируемой папке.
Вот вы и переместили все нужные вам программы на новый или другой компьютер. А что же делать если нужны программы, которые нельзя переместить с помощью PickMeApp?
Создать или скачать портабельную версию нужной программы.
Сначала расскажу что такое портабельная версия программы. Это программа которая может работать на любом компьютере с любого носителя информации. Обычно программы устанавливаются на компьютер и если к примеру, скопировать программу на другой компьютер она не будет правильно функционировать. Отличие портабельной версии в том что она может работать где угодно и не привязана к какому либо компьютеру. Такую программу можно носить с собой на флешке и на каком компьютере вы ее не запускали она везде будет работать, естественно в рамках семейства операционных систем.
Рассказывать, как создать портабельную программу я не буду, для многих это может показаться сложным. Можно не создавать, а просто скачать в интернете практически любую программу в версии portable. Просто пишем в поиск «скачать название_программы portable» — находим и скачиваем нужную вам программу. Если у вас возникли вопросы можете задать их на нашем форуме.
Как перенести программы на другой компьютер?
Если перед вами встала задача переезда на новый компьютер с только что установленной операционной системой, то с большой вероятностью вы задумались о том, как перенести программы на новый компьютер. И это правильно. Гораздо быстрее “обжить” новый ПК и систему, перенеся программы со старого компьютера, сохранив все пользовательские настройки.
Чтобы облегчить перенос программ со старого на новый компьютер, или из одной операционной системы в другую, мы рекомендуем пользователям воспользоваться бесплатной программой PickMeApp, почитать подробнее о которой и скачать которую можно пройдя по ссылке PickMeApp на нашем сайте. Эта бесплатная программа предназначена для переноса приложений с одного Windows-компьютера на другой. Чтобы воспользоваться ей, вам понадобится флэшка. Скачайте дистрибутив программы и затем установите ее на флэш-накопитель.
Если говорить вкратце, то алгоритм работы программы примерно следующий: вы вставляете флэшку с установленной на нее PickMeApp в компьютер с которого хотите перенести программы, утилита выполняет его сканирование и определяет программы, которые можно перенести, затем вы вставляете флэшку с программой в новый компьютер и устанавливаете с нее приложения в новую систему. А теперь давайте рассмотрим подробнее алгоритм работы программы для переноса приложений.
Перенос программ на другой компьютер с помощью PickMeApp
Первое. Как уже говорилось выше, скачайте программу PickMeApp с нашего сайта или с сайта разработчика и установите ее на флэшку, затем откройте ее в проводнике и щелкните по файлу PickMeApp.exe. На экране вашего монитора появится главное окно утилиты, которое включает в себя две основные панели. В левой панели вы увидите список установленных на вашем компьютере программ, а в правая панель будет пустой, именно в нее будут перемещаться определенные и подготовленные для переноса на другой компьютер программы.
Второе. Выберите в левой панели программы, которые хотите перенести с одного компьютера на другой, в нашем примере это программа Adguard, и затем кликните по кнопке “Capture”, как показано на рисунке ниже.
Программа начнет подготовку приложения к переносу. Следить за процессом подготовки можно по соответствующему индикатору.
Как видно на рисунке выше, процесс подготовки программы для переноса можно прервать, пропустить или приостановить с помощью кнопок “Stop”, “Pause” и “More”. После того, как подготовка приложений для переноса будет выполнена, все они появятся в правой панели программы.
Третье. Извлеките вашу флэшку из компьютера и подключите ее к новому компьютеру с новой операционной системой. Запустите на нем с флэшки программу PickMeApp. Затем выберите на правой панели приложения которые были подготовлены для переноса, в нашем случае это программа Adguard и щелкните п кнопке “Install”, как показано на рисунке ниже
После чего начнется процесс переноски приложения в новую систему и новый компьютер. Кстати говоря, процесс установки переносимой программы длиться гораздо быстрее, нежели при установки приложения с “нуля”. По завершению процесса переноса программ на другой компьютер, вы сможете увидеть в папке “Program Files”, папки с перенесенными приложениями. Что в свою очередь будет означать, что миграция программ с одного ПК на другой прошла успешно. После запуска приложений, вам останется только лишь ввести лицензионные ключи к ним, надеемся они у вас охраняться в надежном месте, и вы их не потеряли.
Обратите внимание! В настоящее время программа PickMeApp распространяется бесплатно, однако она находится еще на стадии beta-версии. По этой причине она не всегда работает корректно. Например, мы не смогли с первого раза перенести с помощью нее программу ABBYY FineReader 11. Очень надеемся, что разработчики решат все проблемы к релизу финальной версии программы.
Как перенести программу с одного компьютера на другой
Покупка нового компьютера либо переустановка операционной системы на старом довольно радостное событие, ведь работать на чистой не захламленной системе одно удовольствие. Вот только омрачить всю эту радость может перенос на только установленную систему действительно важных и нужных программ. Почему спросите Вы? Ну, вот, к примеру, под рукой не оказалось установочного диска, да и все сложные настройки нужных утилит уже давно забыты. Дабы не испытывать таких сложностей рекомендуем воспользоваться PickMeApp, которая поможет без какого либо труда перенести установленное ПО со всеми индивидуальными настройками.
Довольно проста в использовании. Окно разбито на две панели. В левой части после не длительного сканирования выводится список программ, которые установлены на Вашем ПК. Дабы выбрать необходимую, достаточно отметить её флажком в соответствующем пункте.
Также дает возможность просмотреть информацию о любом ПО: версию, предполагаемый размер будущего архива, время его создания и т.п. Для этого необходимо ЛКМ выбрать интересующее. Под информацией расположены три кнопки: Capture – захват, Repair – восстановить, Uninstall – удалить.
После выбора необходимых для переноса ПО нужно запустить процесс создания их установочных пакетов, которые включают в себя все нужные файл, настройки, ветки реестра. Для запуска нажмите “Capture marked application”.
Все готовые пакеты с легкостью переносятся в свой профиль с помощью Import. Чтобы развернуть такие пакеты на новой системе достаточно отметить их в правой панели PickMeApp и кнопкой “Install marked application” запустить установку. Имеется возможность сортировки программ по размеру, имени, дате создания, версии или же по дополнительным опциям:
— installed — отображает уже установленные на ПК утилиты; — not installed — отображает не установленные; — selected – отображает выбранные;
— clear – отмена предыдущего фильтра и отображение всех приложений.
Нажав на ссылку “Click here for support information” можно посмотреть подробную информацию о выбранном программном обеспечении. Также стоит знать, что если она уже установлена на Вашем ПК, то будет помечена зеленым кружком.
Некоторые продукты имеют свои нюансы переноса. К примеру, Microsoft Office 2007 Ultimate PickMeApp отобразит большой список компонентов, среди которых в обязательном порядке необходимо выбирать несколько. Что уж поделать, специфика Microsoft. Но такое бывает крайне редко и с простыми приложениями программа справляется быстро и эффективно. Скачать
Перенос данных с одного компьютера на другой
Перенос программ на другой компьютер или в новую ОС
Всем нам известно — только что установленная операционная система работает гораздо быстрее старой системы в которой установлено множество различных приложений. Однако радость от скорости и стабильности работы новой ОС быстро пропадает, когда оказывается, что все любимые игры и часто используемые программы были удалены вместе со старой ОС. Сегодня мы поделимся нашими знаниями о том, как избежать потерь программ и игр при переустановки системы и о том, как их корректно перенести программы на другой компьютер.
Современный мир и современные технологии заставили нас взглянуть на понятие переезда по-другому. Если раньше мы связывали с этим понятием лишь смену жительства, то сейчас так же связываем и смену операционной системы. Что в одном, что в другом случаем с переездом связана масса проблем (перенос вещей/программ, обустройство нового мета/обновление, настройка конфигурации, установка программ, приложений и игр).
Наиболее сложной задачей при переходе на новую ОС является перенос на нее необходимого для работы программного обеспечения, всевозможных приложений, файлов с личными данными, конечно же игр, мультимедийных библиотек, сообщений почтового клиента и настроек установленных программ.
Классический переезд на новый ПК или новую ОС выглядит примерно следующим образом: пользователь удаляет старую операционную систему, форматирует раздел жесткого диска и устанавливает в него новую ОС, предположим Windows 8. После этого начинается самая нудная, долгая и муторная работа: установка нужных для работы программ (которых может быть великое количество), любимых игр, перенос личных файлов в новую ОС. Все бы ничего, но времени, а самое главное нервов при таком подходе уходит масса, при этом никто не застрахован от того, чтобы не потерять в этой рутине раз и на всегда какие-либо файлы, важную корреспонденцию… Встает вопрос: как ускорить и упростить процесс переезда на другой компьютер или новую ОС? Можно ли это вообще сделать? Ничего невозможного нет, для всего есть то или иное решение.
Сегодня мы расскажем вам о том, какие программы существуют для переноса приложений и пользовательских данных на новую ОС. Кроме того, разберем сложные моменты при переезде, а также определимся с тем, какие данные переносить нужно, а какие нет.
Трудности при переносе программ на новую ОС
Самым трудным при миграции, не важно, на новую ОС или на другой компьютер, является перенос программ и их настроек. Обычное копирование папки с установленными в нее файлами программ, вряд ли может быть полезным в данной ситуации, сработает это только с портативными программами. Обычное копирование неизбежно повлечет потерю работоспособности приложений по целому ряду причин:
Какие данные нужно переносить в новую ОС со старой?
Какие данные не поддаются переносу?
К сожалению не всю информацию можно перенести на другой ПК, даже при использовании специализированных инструментов. Точнее попытаться конечно можно, но вот результат будет не гарантирован. Чаще всего к категории таких данных относятся некоторые приложения, например, такие как:
Чтобы не утомлять вас чтением, мы решили не включать в эту статью обзоры программ для переноса данных. Программ для этого существует достаточно, и для некоторых из них уже пишутся обзоры с примерами работы в них. Поэту уже скоро, мы продолжим развивать тему переноса программ на другой компьютер или операционную систему.
Что такое портативные приложения и почему вы должны их использовать?
Установка и удаление программных приложений, вероятно, являются двумя самыми обычными действиями, которые мы выполняем на наших компьютерах. Это включает в себя приложения разных типов, такие как браузеры, видеоплееры и многое другое. При этом все большее количество программ теперь доступно в «портативном» формате, помимо их обычных вариантов. Но задумывались ли вы, что это за портативные приложения?
Если ответ «да», это как раз статья для вас. Расслабьтесь и продолжайте читать, пока мы говорим о портативных приложениях и о том, почему вы должны их использовать, более подробно.
Что такое портативные приложения?
Почему вы должны использовать портативные приложения?
Существует множество преимуществ использования переносимых вариантов программных приложений по сравнению с обычными устанавливаемыми версиями. Вот несколько из них:
1. Портативность
2. Согласованные настройки программы на разных компьютерах
3. Лучшая безопасность
4. Нет необходимости устанавливать и настраивать программы снова и снова
5. Запустите несколько версий одного и того же приложения вместе
Бывают случаи, когда вам нужны разные версии определенной программы (возможно, из-за того, что последнее обновление удалило важную функцию, которую вы часто используете). Теперь большинство установленных программных приложений заменяют свои предыдущие версии при обновлении. Но если вы используете переносимые приложения, вы можете обновить установленную версию программного обеспечения до последней версии и продолжать использовать более старую версию (если имеется) ее переносимого варианта (или наоборот). Как это круто?
6. Синхронизация переносимых приложений с облачными сервисами хранения.
Мы все используем сервисы облачного хранения в эти дни. А при использовании в сочетании с портативными приложениями они становятся еще лучше. В качестве простого примера вы можете установить клиент синхронизации Dropbox на несколько компьютеров и скопировать переносимые приложения в папки синхронизации Dropbox на них. Предполагая, что одна и та же учетная запись Dropbox зарегистрирована на всех ПК, у вас всегда будут одни и те же приложения (и настройки).
Портативные приложения: несколько недостатков
С таким большим количеством хороших вещей, которые они предлагают, Portable Apps также имеют несколько (хотя и не таких больших) недостатков, как указано ниже:
Где вы можете найти портативные приложения?
Используйте портативные приложения для удобных вычислений
Портативные приложения устраняют практически все трудности (например, установку / удаление) работы с программными приложениями. Мало того, они также заставляют ваш компьютер работать немного лучше, так как они не портятся с реестром ОС и настройками конфигурации. Чего же ты ждешь? Получите портативные версии ваших любимых приложений и расскажите нам о них в комментариях ниже.
Переносимые приложения
С того времени, как флэш-накопители стали достаточно емкими и дешевыми, в Сети появилось множество программных продуктов, доступных для использования непосредственно с внешнего носителя, без установки в систему. Такой тип программного обеспечения называется переносимым (или портативным).
Переносимые приложения (англ. portable applications) — категория программного обеспечения, которое для своего запуска не требует его предварительной установки (инсталляции) на жесткий диск компьютера. Переносимые приложения могут полностью храниться на съемных носителях информации, таких как DVD-ROM, USB-диск, SD-карта и т.п.. Понятие «переносимость» ни коим образом не определяет максимальный размер таких приложений (ограниченный размерами съемного носителя), но позволяет (в идеале) храненить и считывать настройки из того же места, где размещены сами программные файлы. Такая возможность обеспечивает использование данного типа ПО на многих компьютерах. С примерами портативных приложений вы можете ознакомиться здесь или обратиться к поиску.
Перечислим преимущества переносимого ПО:
Наряду с преимуществами, есть и недостаток: далеко не все производители программного обеспечения представляют портативные версии своих приложений.
Существует достаточное количество решений, позволяющих превратить обычное приложение в портативное (например, платформа PortableApps) самостоятельно. При этом могут возникнуть сложности, связанные с лицензионными ограничениями. В случае со свободным ПО такие сложности не возникают.
Не следует путать указанную категорию ПО с портируемым программным обеспечением. Переносные приложения не подразумевают интероперабельности, — они подготовлены для использования для конкретной платформе (в первую очередь, на различных версиях MS Windows). Это отнюдь не означает, что интероперабельные программы не могут быть портативными, один из примеров — Mozilla Firefox.
ПЕРЕНОСИМОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ GNU
Особые преимущества свободного программного обеспечения
Свободный статус дал нам два средства обеспечения переносимости программ. Во-первых, поскольку тексты программ распространяются свободно, огромное число людей работает над ними, фиксируются ошибки, добавляя новые возможности, практически осуществляя их перенос. Во-вторых, будучи предназначенными для многократного использования, программы с самого начала разрабатывались как переносимые.
Люди, переносящие GNU на новое оборудование, весьма заинтересованы в качественных инструментах, так как они сами начинают их использовать. Кроме того, никто не тратит усилий на перенос инструментов туда, где они не нужны.
Характерна организационная структура GNU: каждый инструмент имеет одного «держателя», то есть того, кто утверждает изменения. Это обеспечивает постоянство стиля и надежность. С другой стороны, хотя арбитром обычно выступает разработчик, держатели получают от других разработчиков изменения, уже доказавшие свою применимость. Держатели не ограничены какими-нибудь политическими соображениями GNU; по существу, они действуют, приходя к соглашению с разработчиками. При необходимости могут возникать новые центры разработки, а старые исчезать.
Далее обсуждаются различные практические аспекты создания переносимого программного обеспечения: принятие решений о том, какие программы следует переносить, написание переносимой программы, осуществление переноса и обеспечение возможности переориентирования программы.
В качестве примеров будут рассмотрены четыре инструмента, позволяющие продемонстрировать широту подхода проекта GNU: редактор GNU Emacs, отладчик GDB, GNU-компилятор языка Си и библиотека BFD для работы с двоичными программными файлами. Эти компоненты выбраны потому, что каждый:
Предварительные разъяснения
Наконец, переносимым мы назовем программное обеспечение, требующее малых изменений для выполнения на неоднородных платформах без существенных отличий в поведении.
Как решить, что следует переносить
Проект GNU предполагает широкое участие сообщества пользователей. Многие задачи, обычно адресуемые сопровождающему систему специалисту, например, хранение версий и фиксацию ошибок, решаются пользователями-энтузиастами GNU. Совместные усилия распространяются ина перенос на различные машины, и на обеспечение целостности программ.
Написание переносимой программы
Программы GNU написаны на языке Си. Исключение составляют языковые расширения (например, Лисп или язык описания целевых машин системы GCC). Си был выбран по следующим причинам:
Выбрав Си, мы постарались избежать традиционных ловушек. Наиболее широко цитируемое правило наших стандартов программирования: «никаких произвольных ограничений». Это означает запрет стратегически определенных таблиц и строк фиксированной длины.
Препятствия переносимости со стороны аппаратуры
Различия в организации памяти создают проблемы посерьезнее. GNU не предназначено для 64-разрядных машин, но с ростом доступности 64-разрядных машин различия в длине адреса остаются основным источником ошибок. Подчеркнем, что принцип GNU не иметь произвольных ограничений относится не только к размеру массивов и строк, но и к размеру указателя. Другую проблему иллюстрирует следующий фрагмент:
Дело в том, что некоторые машины имеют обратный порядок байт в слове; приведенный фрагмент будет работать не всегда. В Emacs подобные действия реализованы аккуратно с помощью условных макросов.
Проблемы, связанные с операционными системами
Наибольший разнобой, который надо преодолеть, чтобы сделать программное обеспечение переносимым, вносится операционными системами.
Вот некоторые из свойств операционных систем, вызывавших трудности:
Многое из этого списка можно обойти с помощью описанных здесь приемов, однако в ряде случаев мы поступали иначе. Например, можно было бы разработать свой собственный абстрактный интерфейс с оконными системами; мы же выбрали оконную систему Х, так как она свободна и потому может рассматриваться как широко распространенный стандарт.
Переносимая разработка и установка
Будучи переносимым, программное обеспечение должно легко устанавливаться с минимальным числом переделок, связанных с различием платформ. За прошедшие годы было опробовано несколько стратегий. Одну из наиболее занимательных программ, configure, часто называли «Шоу Ларри Уолла», поскольку она выдавала забавные сообщения, пока проводилось всестороннее исследование системы.
настраивает программный пакет на построение в окружении Sun 4 для установки /usr/local/bin и для выполнения на Sun 3. Более того, запрашивается соответствие исходного текста ANSI-стандарту.
Мы планируем в конце концов внедрить configure повсеместно.
Частные случаи
GNU Emacs
Насколько она переносима?
Система GNU EMACS обеспечивает одно из наиболее согласованных программных окружений, доступных на современных компьютерах. Пользователь, сравнивая поведение EMACS на Sun, и на VAX под управлением VMS, может не найти никаких различий. Экраны выглядят одинаково, команды работают одинаковым образом. (Исключение составляют лишь имена файлов системы VMS.) Расширения, сделанные конечными пользователями, тоже выглядят одинаково и, более того, работают на любой другой платформе, оснащенной GNU EMACS.
Как это получилось?
Лисп-программы, относящиеся к редактированию, системно-независимы; однако несколько функций определяется отдельно специально для основной ОС. Вот пример из редактора каталогов dired:
Свободный лисповский символ vms-read-directory определен в файле, компилируемом для системы VMS. Условная компиляция применяется и к функциям, имеющимся не во всех версиях ОС UNIX.
Подсистема отображения должна учитывать возможности различных терминалов. Это достигается сведение всех существенных параметров в единую систему таблиц. Алгоритмы отображения ссылаются только на эти таблицы и не ссылаются на конкретные терминалы.
Более частные вопросы
Объекты Лиспа в Си-программах описывались структурами, поэтому для доступа к его компонентам надо учитывать способ выравнивания машины, чтобы правильно разместить в памяти указатели и части структур. Доступ был реализован макросами. Такая реализация оказалась вполне переносимой; для некоторых машин (например, для IBM PC-RT), потребовалась переделка этих макросов, но такие машины встречаются редко.
Все макроопределения, задающие специфику платформы, можно разделить на обусловленные аппаратурой (например, признак распространения знака) и связанные с ОС (такие, как поддержка сокетов или подпроцессов). Соответственно, они разделяются на два файла: описание машины и описание системы. Иногда макросы переопределяют стандартные установки. Оба включаемых файла (например, m-sparc.h и s-sunos4.h) указываются в файле config.h; тот в свою очередь вставляется во все Си-файлы системы EMACS. Файл config.h участвует и в порождении make-файла. Таким образом, кроме описания машины и системы специфицируют также и процесс построения. Описанный подход сработал очень хорошо; мы намерены использовать его и в будущих версиях.
Отладчик GNU
Первоначальная разработка
У GDB было четыре основных версии, начиная с 1985 года. Первоначальная, выполненная для VAX, включала следующие модули: модуль чтения символьных файлов, управляющий нижним уровнем процессов, вычислитель выражений, интерпретатор команд, драйвер терминала и машинно-зависимые программы. Выделение компонентов оказалось чрезвычайно важным для обеспечения переносимости GDB.
Интересным аспектом GDB была реализация машиннозависимого интерфейса. Ряд функций программы GDB представляли собой простые инкапсуляции макросов. Спецификация интерфейса макросов для внутренних функций нижнего уровня и функционального интерфейса над ним позволяла четко разделить перенос и расширение возможностей отладчика.
Развитие разработки
Версия 2 системы GDB помимо VAX работала на Sun 3. Архитектура Sun 3 отличается от архитектуры VAX некоторыми важными деталями (прежде всего, порядком байт в слове), но есть и общие черты: использование стека для передачи параметров, поддержка сходных форматов символьных таблиц, отсутствие конвейера длинных команд. GDB удалось преобразовать таким образом, что изменения не затронули машиннозависимых функций отладчика.
При переносе GDB на архитектуру SPARC пришлось многое переписать: параметры могли передаваться через регистры, регистровые окна использовались как стековые кэши, адреса возврата в стеке заменялся регистром, а на фоне команд передачи управления из-за их задержки могли выполняться другие команды.
Возникшие проблемы можно было бы решать двумя способами: реализовать специализированный вариант для SPARC или обобщить компоненты GDB. Первый способ казался более привлекательным, но означал запутывание текста многочисленными директивами условной компиляции. Был выбран второй способ; после того, как перенос на SPARC был завершен, GDB без проблем удалось перенести и на ряд других RISC-архитектур.
Когда группа сопровождения системы GDB объявила о слиянии всех версий в новую редакцию, неожиданно возник поток откликов: более 130 разработчиков «приспособили» GDB для поддержки своих удаленных файлов и/или форматов объектных файлов. В сущности, они почувствовали, что достигнута точка, когда GDB приобрела все, что могла, будучи свободно переустанавливаемой, и настал момент, когда придется ограничиваться лишь локальными изменениями и улучшениями.
Переносимость или удобство сопровождения
Библиотека BFD (Binary File Descriptor) обеспечивает интерфейс высокого уровня с множеством различных форматов объектных файлов. В настоящее время она выполняется на дюжине различных систем.
В библиотеке BFD принят подход к переносимости, отличающий ее от систем GCC и EMACS. Во-первых, вместо того, чтобы пытаться свести все системы к одной модели, она для решения проблем переносимости определяет новые абстракции. Во-вторых, привязка к платформе происходит динамически.
Цель и функционирование
Когда началась разработка BFD, лишь немногие из инструментов GNU могли выполняться на системах, которые не были бы фактически порождены BSD. Мы считали, что будет необходимость в поддержке COFF, ELF и других форматов объектных файлов.
Вместо того, чтобы пытаться по существу параллельно реализовывать многие инструменты, мы решили обеспечить интерфейс в терминах символов, разделов и перемещений в памяти. Это привело к многократному использованию гораздо большей части кода, чем раньше.
Новая абстракция
Ранние инструменты GNU полностью ориентировались на формат a.out. Операции выполнялись в том порядке, в котором их данные появлялись в файлах; структура файла совпадала с со структурой программы.
BFD основывается на спецификации операций, осмысленных в любом объектном файле. Объектный файл представляется объектом, названным bfd. Все действия в BFD выполняются путем вызова функций над подобными объектами. Набор операций невелик: создание раздела, перемещение по памяти, чтение содержимого раздела, поиск символов и чтение данных (чтобы скорректировать порядок байт).
Первым текстом такого подхода была реализация программы strip для a.out при помощи перечисленных операций. С самого начала реальные приложения помогали нам обнаруживать пробелы в разработке. Переписывая какие-либо утилиты на базе BFD, мы одновременно порождали другой вариант, для COFF. Когда требовались еще нереализованные операции, мы их добавляли.
Поведение во время выполнения
Интерфейс с форматом объектного файла описывался следующей структурой:
Так как формат описан в самой структуре bfd, нетрудно определить макрос, обеспечивающий вызов нужного метода:
Реализационные соображения
Оказалось, что осуществить перенос BFD легче, чем мы сначала предполагали. Поскольку BFD не использует сигналы или другие существенно переменные части ОС UNIX, потребовалась минимальная условная компиляция.
Другой причиной простоты переноса BFD является то, что интерфейс точно описывается интерфейсными функциями. Перенос сводится к просмотру списка операций и написанию реализации каждой операции. При этом легко использовать текст уже имеющихся переносов.
BFD с самого начала разрабатывалась с возможностью переориентации на различные целевые машины. Каждый bfd содержит неинтерпретируемые данные, зависящие от целевой системы. Ни одна из внешних точек входа не использует эти данные, но программы нижнего уровня могут запоминать в них любую необходимую информацию. На самом деле имеется всего два таких блока: однородная память и память для архивов. Так, можно использовать архивы в стиле COFF и s-файлы.
Успехи
Хотя библиотека BFD и способствовала повышению переносимости инструментов GNU, многие, привыкшие работать на нижнем уровне, иногда бывают смущены, когда начинают ее использовать. Например, они часто спрашивают, почему BFD не дает возможности определить «текстовый» раздел, так как файлы a.out всегда его содержат. BFD ничего не знает о специфике «текстовых» разделов. Чтобы найти выполняемый раздел, необходимо идентифицировать его как раздел, содержащий команды.
Приятным сюрпризом оказалась возможность одновременно работать с неоднородными двоичными данными, позволяющая различать каждый двоичных формат. Ядро GNU использует ее, посредством BFD читая объектные файлы.
Си-компилятор GNU
В этом разделе мы используем термин переориентируемость для описания свойств, зависящих от целевой платформы, и переносимость для описания свойств, зависящих от основной платформы.
Цели первоначальной разработки
Первоначальная организация GCC опиралась на опыт, накопленный при разработке гдв и EMACS. Как это было описано выше, характеристики машины и системы могли определяться во включаемых файлах. Точное определение всех необходимых параметров является одним из ключевых моментов, обеспечивающих переносимость и переориентируемость GCC.
EMACS и GDB различают «системную» и «машинную» зависимости. Реализация GCC углубляет классификацию, вводя различия между параметрами основной и целевой машин и определяя язык описания машин. GCC, в отличие от EMACS»а, не имеет встроенного интерпретатора и следует парадигме GDB, разрешающей пользователю иметь один Си-файл, в который помещаются функции, зависящие от целевой системы (например, отвечающие за формирование ассемблерного кода).
В течение двух лет GCC была перенесена более, чем на дюжину платформ. Виртуально все переносы были «местными» (построение компилятора производилось на той же системе, для которой он должен был генерировать код). Множество местных переносов, осуществленных «любителями», доказывает, что GCC в высшей степени переориентируемый компилятор.
С ростом популярности GCC, главным образом в областях, где существенна производительность, пользователи начали настраивать GCC в кросс-режим. Сначала не было существенной разницы между прямой и кросс-конфигурациями GCC, но когда пользователи стали работать на RISC-процессорах, переносимость GCC подверглась серьезным испытаниям.
Построение кросс-компилятора на SPARC для 680х0 было несложным. Правила выравнивания структур различны, но порядок байт одинаков. В то же время MIPS использует обратный порядок байт. Поэтому операции наподобие свертки констант (что сводится к выполнению целевых вычислений на основной машине во время компиляции) пришлось реализовывать тщательно. Не было предусмотрено лишь желание отдельных пользователей поддерживать GCC на многих машинах, генерируя код сразу для множества процессоров.
Факторы, вызвавшие изменения
Пожалуй, наибольшее препятствие для переноса GCC состояло в использовании компилятора основной машины для построения GCC в первый раз. Система GCC минимизирует число ограничений; ее разработка велась в предположении, что она будет транслироваться компиляторами с тем же качеством реализации. Это предположение почти никогда не подтверждалось: макроопределения часто не укладывались в фиксированные границы системных компиляторов, различные нестандартные в смысле ANSI платформы имели включаемые файлы, предназначенные для использования в окружении ANSI, другие файлы были просто ошибочными. Потребовалась большая работа, чтобы заставить GCC работать на этих платформах.
Заключение
Программное обеспечение GNU имело высокую степень переносимости с самого начала. Приобретая больший опыт, мы чувствуем, что оно со временем становится еще более переносимым; важность этого постоянно растет в нашем мире стандартов. Расширяя и улучшая свое программное обеспечение, мы просим компьютерное сообщество продолжать поддерживать нас в этом.
Наиболее полная информация по всем вопросам, касающимся проекта GNU:
Российский Центр Системного программирования тел. (095) 272-53-17 e-mail: help@rcsp.msk.su
Смирнов Юрий Петрович
Бесплатное копирование лент FSF:
Поделитесь материалом с коллегами и друзьями








