Operating Systems Development Environment Course Briefing - 2004
150 likes | 239 Vues
Gain insights into operating systems, with a focus on Microsoft Windows and Linux, programming platforms, practical development tips, debugging tools, GNU utilities, and the power of Makefiles. Enhance your development skills effectively.
Operating Systems Development Environment Course Briefing - 2004
E N D
Presentation Transcript
Ambiente de desenvolvimento Curso de Nivelamento LCG - 2004
Sistemas Operacionais • Duas escolha + óbvias • Microsoft Windows (98 / NT / 2000 / XP / ?) • Grande base instalada • 90% dos computadores pessoais usam Windows • Popular e relativamente fácil de usar • Grande base de software disponível • Vulnerável • 99.9% dos vírus são desenhados para explorar fraquezas do Windows • Estabilidade precária • Proprietário ($) • Microsoft é a única detentora dos fontes e direitos • Microsoft Product Activation • Qualquer bug/defeito/inconveniência precisa ser reconhecido e corrigido pela Microsoft
Linux • Gratuito • Open-source • Fontes são abertos -> bugs / características podem ser consertados e alterados por qualquer pessoa • Ganhando popularidade • Grande base de software • Menos que windows, porém mais que windows se considerarmos softwares de custo zero • Diversidade de distribuições • RedHat / Mandrake / Suse / Debian / etc • vantagem ou uma desvantagem?
Plataformas de desenvolvimento • Gnu (free-source) • Compiladores C, C++, Pascal, Fortran, Java, etc • Disponíveis também em Windows • Cygwin (Ambiente pseudo-windows) • Mingw32 (Minimalistic Gnu for Windows-32) • Windows • Visual – XXX (Microsoft) • XXX – Builder (Borland) • Algumas ferramentas portadas para Linux (Kylix) • Outras • Java (Sun)
Pragmática do desenvolvimento • Algoritmos e estruturas de dados • Alguns têm que ser desenvolvidos • Muitos podem ser reutilizados • Bibliotecas • Componentes • Aplicações prontas • Programação • Linguagem • Imperativa / Funcional / Declarativa ? • OO ou não ? • Compilada ou Interpretada? • Disciplina de programação • OO / Programação Estruturada / Outras
Pragmática do desenvolvimento • Edição / Compilação / Execução • IDEs (Integrated Development Environments) ou Editores de Texto “espertos” • Edição de vários arquivos simultaneamente • Realce de Sintaxe • Integração com compiladores para achar linhas de código erradas • Exemplos: Kate, Emacs, Nedit, Crimson Editor (windows) • Make • Depuração • Inspeção visual • Prints • Asserts • Debuggers
Ferramentas GNU • Variantes de ferramentas historicamente ligadas ao Unix • Compiladores • gcc (C) • g++ (C++) • g77 (Fortran-77) • Bibliotecas • runtime (chamadas do sistema operacional) • glib (I/O, matemática, etc) • STL (C++ Standard Template Library) • muitas outras
Exemplo: Digitando • Programa simples digitado com editor “esperto” • Realce de sintaxe • Balanceamento de terminadores (aspas, chaves, etc)
Exemplo: Rodando o programa • Programa salvo como exemplo0.c • Compilando: $ gcc –O -c exemplo0.c • Gerando executável: $ gcc -o exemplo0 exemplo0.o • Executando: $ exemplo0 abc def g Argumentos: 0: exemplo0 1: abc 2: def 3: g
Compilador gcc • gcc opção1 ... opçãoN arquivo1 ... arquivoN • Algumas opções -o nome executável terá este nome (default = a.out) -c apenas compile, não gere executável -O otimize código -g gere informações para depuradores -Idir procure includes em dir -Ldir procure bibliotecas em dir -lbib junte (link) biblioteca bib
Compilador gcc • Exemplos • gcc -o exemplo1 exemplo1.c • gcc –g –O –I/usr/local/include –o exemplo2 main.c\part1.c part2.c part3.o –L/usr/local/lib –lcurses
Compilando um programa • As opções de compilação necessárias para compilar um programa podem ser bastante complicadas • Um programa pode ser composto de muitas unidades de compilação (fontes) • Se um fonte é alterado, não queremos compilar todos, mas apenas os afetados • Solução: Usar uma ferramenta chamada make • Solução alternativa: usar IDEs e “Projetos” • Não tão legal: projetos são arquivos de formato proprietário e tipicamente binários
Make • Ferramenta para construção de arquivos (tipicamente programas executáveis) a partir de seus componentes • Uso: make?-f makefile? ?target? • makefile • arquivo de instruções • default: makefile ou Makefile • target • programa ou arquivo se quer construir • default: o primeiro target to makefile
Makefile • regras • 2 partes: • dependências target: dependência, ... dependência • comando (opcional): diz como construir target • regras podem ser implícitas (genéricas) ou explícitas (específicas) • variáveis variável = valor • comentários # comentário • diretivas • Incluir outro makefile • compilação condicional
Tabs, não espaços! Makefile: exemplo CC = gcc CFLAGS = -O .c.o: $*.h $(CC) $(CFLAGS) -c $*.c exemplo: part1.o main.o $(CC) $(CFLAGS) -o $@ $^