
Я хочу, чтобы моя Fedora Linux могла выполнять следующие функции:
Используйте Linux в качестве полноценной платформы для разработки, не требующей установки какой-либо другой ОС, но при этом позволяющей создавать и тестировать программы на разных платформах.
Полностью замените машину Windows для всех остальных задач, например Office, Paint, удаленный рабочий стол и т. д.
Можете ли вы предложить проекты и инструменты с открытым исходным кодом для достижения вышеуказанных целей?
решение1
Дайте определение «платформе». Вы не можете разумно тестировать программное обеспечение, предназначенное для использования на Windows или Mac, без фактического запуска этих операционных систем, даже если возможно использовать кросс-компиляцию для его сборки на Linux. Для реального тестирования на других операционных системах VMware — отличный инструмент.
Вторая часть вашего вопроса, вероятно, должна быть совершенно отдельным вопросом. Но вы можете использовать OpenOffice.org или Google Docs для замены MS Office, Pinta или GIMP или что-то еще для замены Paint, VNC или Empathy+Vinagre для замены Remote Desktop и т. д. и т. п.
Было бы легче ответить на эти вопросы, если бы вы привели более конкретные примеры использования.
решение2
Вы можете легко заниматься кроссплатформенной разработкой, будь вы системным программистом, веб-разработчиком или разработчиком настольных приложений. Если вы занимаетесь системами, то любые утилиты и/или драйверы, которые вы пишете для Linux, скорее всего, будут хорошо работать и для других *nix с минимальными изменениями. При условии, что вы пишете стандартный код C и не используете слишком много системно-специфичных вызовов, их можно даже легко портировать на Windows.
Если вы разработчик настольных приложений, вы можете нацелиться на GTK, QT или wxWidgets, и ваше приложение, скорее всего, будет хорошо работать на трех основных платформах сегодня (*nix, Windows, Mac). Опять же, сведите системно-специфичные вызовы к минимуму или изолируйте их в библиотеке-обертке, которая будет системно-специфичной. Вы также нацеливаете виртуальную машину, такую как JVM и/или CLR, что позволит приложению работать на всех платформах.
Если вы веб-разработчик, то вам, скорее всего, придется выбирать из слишком большого количества альтернатив. Я предпочитаю небольшой веб-сервер под названиемчерокиЯ разрабатываю и запускаю приложения ASP.NET (mono) и Django, которые работают на этой платформе и используют бэкэнд PgSQL.
Итак, вывод в том, что кроссплатформенная разработка в Linux может быть реализована, при условии, что вы можете скомпилировать код на целевой платформе и будете помнить об этом при написании кода или если вы ориентируетесь на VM. Другой момент заключается в том, что вы можете столкнуться сПарадокс выбораи не знаю что использовать. Для этого читайте ниже мой ответ на второй вопрос.
Что касается второго вопроса, лучший ресурс, который я нашел, называетсяАльтернативы с открытым исходным кодом. Этот веб-сайт содержит список коммерческого программного обеспечения и его альтернатив с открытым исходным кодом. Почти все альтернативы работают на Linux и FreeBSD.
решение3
Нуууу, #1 — это просто чушь, сэр. Я не знаю, есть ли способ достичь этой цели. Можно сделать кросс-компиляцию в другие *nix-ы (с небольшой головной болью) на вашем компьютере для разработки, но как именно вы собираетесь запустить этот код без соответствующей ОС и архитектуры? Существуют обширные набеги наэмуляция системытам, но в конечном итоге это лажа. Если вы хотите протестировать программное обеспечение на ОС/архитектуре, запустите его на этой ОС/архитектуре!
С другой стороны, теперь появились инструменты, которые упрощают реализацию одного и того же проекта в самых разных конфигурациях. Cmakeвероятно, наиболее известный и проверенный. По крайней мере, это поможет вам в тестировании вашего проекта на других системах или побудит других сделать это за вас.
Честно говоря, я почти уверен, что это невозможно и в других операционных системах.
#2 намного проще
и так далее и тому подобное. Я бы помог больше, но острота ваших вопросов резко падает.
решение4
MonoDevelopдолжны помочь вам разобраться в вопросах разработки:
MonoDevelop — это IDE, разработанная в первую очередь для C# и других языков .NET. MonoDevelop позволяет разработчикам быстро писать десктопные и ASP.NET веб-приложения наЛинукс, ОкнаиMac OS X. MonoDevelop упрощает для разработчиков перенос приложений .NET, созданных в Visual Studio, на Linux и позволяет поддерживать единую кодовую базу для всех платформ.
(выделено мной)