Mudança de SO - As consequências - C - Portugal-a-Programar
Mudança de SO - As consequências
Por Localhost, 11 de Novembro de 2009 em C
Olá pessoal, nesta última semana tive o decisão de mudança de SO, vou mudar de Windows para Linux...
Surgiram-me então (antes de mudar de SO) algumas dúvidas quanto à programação...
É assim, a programação em C vai mudar em sintaxe alguma? Vou ter de voltar ao inicio de tudo se mudar para Linux? Ou simplesmente tudo se mantém igual?
mantém-se tudo igual! Até melhora em alguns aspectos...
Se tens usado C standard não vai mudar nada.
Tal como o Baderous indicou o código fonte se for só bibliotecas standard C mantém-se igual.
No entanto, tens q recompilar o código fonte, os executáveis não podem ser os mesmos.
dennyazevedo 0
Tudo depende no nível de programação. Os dois sistemas possuem arquiteturas internas diferentes.
Se estiver utilizando Threads, no windows eles compartilham recursos e memória com o principal, no Linux, cada um é um processo independente, portanto, troca de dados entre os mesmos requerem programação distinta entre os sistemas.
Eu sei que não é perfeitamente rígida a definção de threads e processos, em muitos casos "threaded code" refere-se a processos independentes. Mas a ideia que tenho, e que penso ser a geral, é que um processo é sim "independente" mas as threads não. Uma thread partilha o mesmo espaço de memória, aliás várias threads correm frequentemente no mesmo processo (essa é uma das diferenças normalmente apontada) seja linux ou windows, o que interessa é o conceito não o SO. Eu em linux já trabalhei tanto com processos e threads e reparei nas suas diferenças.
Agora também, no meu caso, posso dizer que quando se entra na área de processos ou threads o código começa-se a tornar um pouco espcífico (mais por culpa das bibliotecas envolvidas), deve haver uma camada de abstracção entre os dois SO's, mas nunca usei, quando chega a esse nível foi sempre código específico. Mas para código mais geral deverá funcionar sem ou com pouquíssimas alterações.
Não, não. A questão é que há uma maior preferência pela criação de processos em Unix, e de threads em Windows, mas o Linux suporta perfeitamente threads com compartilhamento de memória, como definidas pelo POSIX:
Desde o kernel 2.6 que o suporte para threads é fornecido pela Native POSIX Thread Library (NPTL), e em testes conseguiu criar 100 000 threads em 2 segundos, enquanto a implementação anterior demorava 15 minutos
E aliás, também há suporte para pthreads (POSIX threads) em Windows: http://sourceware.org/pthreads-win32/
Bem então tudo se mantém igual? Então vou mudar
EDIT: Alguém me podia indicar algum compilador para Linux? Só não gosto de Linux por causa do software
Isso não há questão, é o GCC, a maior parte das distros já vêm com ele.
Se queres um IDE, experimenta o Code::blocks.
boas,tens um comlilador chamado adjunta,ou eclipse,e tb tens o code blocks
Arranja a máquina virtual ,é muito mais fácil e prático.Podes estar com o windows e com o linux abrtos ao mesmo tempo.
Só uma correcção, nenhum desses é um compilador.
O Anjuta, Eclipse e Codeblocks são programas para gerir projectos e editar código, ou seja, IDEs. Por serem ambientes integrados de programação, permitem interagir com compiladores de forma a compilar todo o projecto com um simples clique.
Apesar de todos suportarem o GCC, pelo menos o Codeblocks pode usar também o VC++, o Borland, o Digital Mars e o Intel.