Другие языки программирования и технологии
Как возможно перевести программу работающую в Linux для работы в Windows? Как вкратце происходит этот процесс?
полная перекомпиляция исходников программы. То есть берем компилятор, берем программу в исходных кодах и компилируем. Приэтом исходные коды должны быть одоптированы как кроссс платформенные
Все зависит от того, как написана программа, на каком языке она написана и как плотно она использует сосбенности ОС.
Часть программ портировать практически невозможно из-за того, что в Windows просто нет тех возможностей, котрые есть в Linux.
Другую часть портировать можно, но для этого прийдется сильно попотеть, меняя значительные фрагменты программы. Например в *nix системах есть замечательная функция fork(), которая из процесса родителя создает точную копию процесса потомка (там различие только в возвращаемом значении из этой функции) , а в Windows для порождения процесса надо по хорошему написать две страницы кода и точной копии там просто так не получишь. Допустим, что некая программа для линукс работает на многопроцессорной машине и что-то вычисляет. Программист мог бы сделать множественный форк для порождния числа процессов по числу процессоров, чтобы они равномерно по ним размазались. Все, что для этого нужно в *nix - это несколько вызовов fork(). Если вы примерно представляетет себе, как работает функция CreateProcess в windows, то должны понимать, что легко вы аткой код не портируете.
Третья часть программ - это программы изначально ориентированные на мультиплатформенность. В таком ПО делают слои, специфичные для программы и для аппаратуры. В результате портирование такого ПО больших проблем не представляет и зачастую может быть выполнено простой перекомпиляцией.
Часть программ портировать практически невозможно из-за того, что в Windows просто нет тех возможностей, котрые есть в Linux.
Другую часть портировать можно, но для этого прийдется сильно попотеть, меняя значительные фрагменты программы. Например в *nix системах есть замечательная функция fork(), которая из процесса родителя создает точную копию процесса потомка (там различие только в возвращаемом значении из этой функции) , а в Windows для порождения процесса надо по хорошему написать две страницы кода и точной копии там просто так не получишь. Допустим, что некая программа для линукс работает на многопроцессорной машине и что-то вычисляет. Программист мог бы сделать множественный форк для порождния числа процессов по числу процессоров, чтобы они равномерно по ним размазались. Все, что для этого нужно в *nix - это несколько вызовов fork(). Если вы примерно представляетет себе, как работает функция CreateProcess в windows, то должны понимать, что легко вы аткой код не портируете.
Третья часть программ - это программы изначально ориентированные на мультиплатформенность. В таком ПО делают слои, специфичные для программы и для аппаратуры. В результате портирование такого ПО больших проблем не представляет и зачастую может быть выполнено простой перекомпиляцией.
см cygwin.
Похожие вопросы
- Пожскажите программу для оптимизации и улучшения работы системы windows xp?У меня сильно тормозит комп
- Знатоки в Linux, помогите новичку в Linux но чайнику по Windows разобраться в разделах!>>>
- Pascal перевести программу на подпрограмму.
- Я видел в вакансиях требование - умение работать с Linux. А что именно нужно знать в Linux?
- Как установить Linux Suse без удаления Windows Xp?
- Почему программа работает некорректно при вводе цифры "0"?
- Можно ли сказать, что если прикладной программист осилил среду GNU/Linux, то среду MS Windows он и подавно осилит?
- Чтобы запускать программы нужна программа работающая уже, а что за это программа загрузчик?
- Помогите перевести программу с Pascal в С++
- Подскажите хорошую программу для создания/редактирования видео на подобии Windows Movie Maker. Спасибо! Спасибо!