
Quero tornar meu Fedora Linux capaz de seguir:
Use Linux para uma plataforma de desenvolvimento completa sem exigir qualquer instalação de outro sistema operacional, mas ainda capaz de construir e testar programas em diferentes plataformas.
Substitua completamente a máquina Windows para todos os outros trabalhos, por exemplo, Office, Paint, Área de Trabalho Remota, etc.
Você pode sugerir projetos e ferramentas de código aberto para atingir os objetivos acima?
Responder1
Defina "plataforma". Você não pode testar razoavelmente software destinado ao uso em Windows ou Mac sem realmente executar esses sistemas operacionais, mesmo que seja possível usar compilação cruzada para construí-lo no Linux. Para testes reais em outros sistemas operacionais, o VMware é uma ótima ferramenta.
A segunda parte da sua pergunta provavelmente deveria ser uma pergunta totalmente separada. Mas você pode usar o OpenOffice.org ou o Google Docs para substituir o MS Office, Pinta ou GIMP ou qualquer outro para substituir o Paint, VNC ou Empathy+Vinagre para substituir a Área de Trabalho Remota, etc.
Seria mais fácil responder a essas perguntas se você fornecesse alguns casos de uso mais específicos.
Responder2
Você pode realizar facilmente o desenvolvimento de plataforma cruzada, seja você um programador de sistemas, um desenvolvedor web ou um desenvolvedor de aplicativos de desktop. Se você gosta de sistemas, então quaisquer utilitários e/ou drivers que você escrever para Linux provavelmente funcionarão bem para outros *nix com modificações mínimas. Desde que você escreva código C padrão e não use muitas chamadas específicas do sistema, elas podem ser fáceis de portar para o Windows.
Se você é um desenvolvedor de aplicativos de desktop, pode direcionar GTK, QT ou wxWidgets e seu aplicativo provavelmente funcionará bem nas três principais plataformas atuais (*nix, Windows, Mac). Novamente, reduza ao mínimo as chamadas específicas do sistema ou isole-as em uma biblioteca wrapper que será específica do sistema. Você também chama uma máquina virtual como JVM e/ou CLR, que permitirá que o aplicativo funcione de maneira geral.
Se você é um desenvolvedor web, provavelmente encontrará muitas alternativas diferentes para escolher. Eu prefiro um pequeno servidor web chamadoCherokeee desenvolvo e executo aplicativos ASP.NET (mono) e Django que rodam nele e usam um backend PgSQL.
Portanto, a conclusão é que o desenvolvimento multiplataforma no Linux pode ser feito, desde que você possa compilar o código na plataforma de destino e tenha isso em mente ao escrever seu código ou se tiver como alvo uma VM. O outro ponto é que você pode se deparar comO paradoxo da escolhae não sei o que usar. Para isso leia abaixo minha resposta à segunda pergunta.
Quanto à segunda pergunta, o melhor recurso que encontrei chama-seAlternativas de código aberto. Este site lista software comercial e suas alternativas de código aberto. Quase todas as alternativas rodam em Linux e FreeBSD.
Responder3
Weeeeeeel, o número 1 é incrível, senhor. Não sei se existe alguma maneira de atingir esse objetivo. A compilação cruzada para outros *nixes pode ser feita (com um pouco de dor de cabeça) em sua caixa de desenvolvimento, mas como exatamente você deve executar esse código sem o sistema operacional e a arquitetura apropriados? Há extensas incursõesemulação de sistemalá fora, mas no final das contas isso é um obstáculo. Se você quiser testar software em um sistema operacional/arquitetura, execute-o nesse sistema operacional/arquitetura!
Agora, por outro lado, existem ferramentas que simplificam a construção do mesmo projeto em uma vasta gama de configurações. Cmakeé provavelmente o mais conhecido e testado. Pelo menos isso irá ajudá-lo a testar seu projeto em outros sistemas, ou encorajará outros a fazerem isso por você.
Para garantir, tenho certeza de que isso também é impossível em outros sistemas operacionais.
#2 é muito mais fácil
e assim por diante. Eu ajudaria mais, mas a acuidade das suas perguntas cai drasticamente.
Responder4
MonoDesenvolvimentodeve ser capaz de ajudá-lo a entender o lado do desenvolvimento:
MonoDevelop é um IDE projetado principalmente para C# e outras linguagens .NET. MonoDevelop permite que os desenvolvedores escrevam rapidamente aplicativos desktop e ASP.NET Web emLinux, janelaseMac OS X. O MonoDevelop facilita aos desenvolvedores a portabilidade de aplicativos .NET criados com o Visual Studio para Linux e a manutenção de uma única base de código para todas as plataformas.
(o destaque é meu)