Sobre c
- 3200
- 659
- Enrique Gutkowski PhD
Introdução
O que você está apenas lendo é o começo de uma série de artigos dedicados ao desenvolvimento em sistemas Linux. No entanto, com pequenas modificações (se houver), você poderá usar esse conhecimento que receberá lendo nossa série em qualquer outro sistema que use as mesmas ferramentas (Openindiana, BSD…). Este primeiro artigo lidará gradualmente com os meandros de escrever código C no Linux. Espera -se que você tenha conhecimento básico de programação, em sistemas Linux/Unix ou em outras plataformas. A idéia é que você saiba o básico da programação, como o que é uma variável ou como definir uma estrutura. Mesmo assim, você obterá essas informações deste artigo, não insistiremos muito em conceitos de nível iniciante. Uma palavra de aviso: não incluiremos tudo o que há para contar sobre C, porque isso levaria muito espaço e, claro, não sabemos tudo sobre C.
Por que c?
Alguns de vocês podem argumentar que C não é o melhor idioma de nível iniciante de todos os tempos. Concordou, mas, novamente, espera -se que você tenha algum conhecimento básico de programação, para um. Segundo, C e Unix, e Linux posteriormente, estão intimamente ligados que só parecia natural começar nossa série de desenvolvimento com C. Do kernel, do qual uma parte substancial é escrita em C, para muitos aplicativos diários de terra de usuários, C é usado massivamente no seu sistema Linux. Por exemplo, o GTK é baseado em C; portanto, se você estiver usando aplicativos GNOME ou XFCE, estará usando aplicativos baseados em C. C é uma linguagem de programação antiga e bem estabelecida, ferramenta vital em muitas partes do mundo de TI, de sistemas incorporados a mainframes. Portanto, é justo supor que C habilidades não apenas enriquecerão seu currículo, mas também ajudarão você a resolver muitos problemas no seu sistema Linux, ou seja, se você levar isso a sério e praticar muito lendo e escrevendo C código.
Sobre c
História
C tem mais de 40 anos, com o início do Bell Labs com Brian Kernighan, Dennis Ritchie e Ken Thompson como os “suspeitos usuais.”O desenvolvimento da UNIX e a evolução de C estão intimamente ligados, como dissemos, porque o Unix foi escrito inicialmente na Assembly, mas isso teve muitas deficiências. Portanto, ao se mudar para o PDP-11 como a principal plataforma de hardware, os desenvolvedores começaram C como um idioma principal para o Unix. Em 1978, Kernighan e Ritchie escreveram: "The C Programming Language", um livro que é hoje como era há 20 anos: o livro sobre programação C. Nós recomendamos que você entenda.
Classificação
Sempre há pessoas interessadas na classificação das coisas e, é claro, a programação não é diferente. Brincadeiras à parte, já que estamos no começo, pensamos que você deveria saber que C é uma linguagem de programação estruturada processual, com digitação fraca. O que acabamos de dizer, em inglês, é que C usa procedimentos (o nome usual usado por programadores C, e o que usaremos também, são funções), que ele usa uma abordagem estruturada (pense em blocos de código) e Finalmente, ele suporta conversões de tipo implícito. Se você não sabe o que significa que não significa, não tema, você descobrirá!
Nossa abordagem
Este artigo, que é apenas a parte introdutória e publicaremos regularmente as próximas partes, onde cada capítulo lidará com uma parte importante do idioma: variáveis, ponteiros, estruturas, etc. (Inscreva -se no RSS Feed, se você ainda não o fez) no final da parte teórica, mostraremos um exemplo prático, para o qual escolhemos o qual, um pequeno software escrito por Kimball Hawkins (obrigado, Kimball). Vamos compilá -lo e depois empacotá -lo para os sistemas Debian e Fedora. O desenvolvedor do Debian Andree Leidenfrost mostrará como enviar nosso novo pacote para o Repositório Debian, certificando -se de que respeitamos todos os requisitos do pacote a serem admitidos na Distribuição Debian (obrigado, Andree). Recomendamos que você experimente nossos exemplos em seu sistema, reserve algum tempo para examinar o código e tentar fazer modificações próprias.
As ferramentas necessárias
Antes de começarmos, certifique -nos de ter todas as ferramentas essenciais instaladas no seu sistema Linux. Você precisará de um compilador, como o GCC, o pacote Binutils e um editor de texto ou um IDE. Se você escolhe o editor de texto ou algum tipo de IDE depende em grande parte de suas preferências, mas mais disso mais tarde. Dependendo das opções de distribuição e instalação do Linux que você usou, você já pode ter as ferramentas necessárias instaladas. Reunimos um pequeno script para ajudá -lo a ver se você tem todas as ferramentas de desenvolvimento obrigatórias instaladas:
#!/bin/sh gcc -v se [$? != 0]; então eco "GCC não está instalado!"fi ld -v se [$? != 0]; então eco "por favor instale binutils!"Fi
Salve este script como DevToolscheck.sh, execute:
$ SH Devtoolscheck.sh
Na minha máquina, recebo a seguinte saída:
$ SH Devtools.SH usando especificações embutidas. Colecion_gcc = gcc collect_lto_wrapper =/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.6.1/LTO-Wrapper alvo: x86_64-linux-gnu configurado com:…/src/configure -v ---with-pkgversion = 'Debian 4.6.1-4 '---with-bugurl = arquivo: /// usr/share/doc/gcc-4.6/ReadMe.Bugs --enable-Languages = c, c ++, fortran, objc, obj-c ++, go --prefix =/usr --program-suffix = -4.6-Soldado-Soldado-Modelo de Moldado-Moldado [Opções de Config] Tópico: Posix GCC Versão 4.6.1 (Debian 4.6.1-4) GNU LD (GNU Binutils for Debian) 2.21.52.20110606
Por que você precisa de binutils binários e GCC, você verá em breve. Agora vamos nos concentrar um pouco na pergunta "editor vs ide".
A única coisa que vamos aconselhá -lo a esse respeito é “use o que você se sente confortável e desconsidere o que os outros dizem”. Este assunto é muito subjetivo e depende de muitas variáveis. Por exemplo, se você se desenvolve (ou costumava se desenvolver) em outros sistemas operacionais, poderá estar acostumado a um IDE. Você encontrará muitos bons Ides no Linux, incluindo Eclipse, Geany, Kdevell ou Anjuta. Tente instalá -los para ver o que você acha mais adequado. Por outro lado, se você quiser seguir o editor simples, há muitas opções aqui também: VI (M), Emacs, Kate, Nano, Jed e assim por diante. Ao pesquisar na Internet, você encontrará muitas discussões sobre qual é o melhor editor. Dizemos que instale alguns deles e descubra o que mais lhe convier. Você é o único juiz disso, e será uma ferramenta que você usará com frequência, então leve seu tempo, use -o, leia sobre isso e familiarize -se com ela. Independentemente de sua escolha, assumiremos que você fez sua escolha em relação à ferramenta de edição e você está familiarizado com seu uso.
O processo de compilação
Em palavras simples, esse processo é o que começa com o código -fonte que você escreveu e se tudo correr bem, o resultado é um binário executável ou uma biblioteca. Escusado será dizer que há mais, mas é essencial para você entender a frase acima antes de seguir em frente. Você não precisa memorizar todos os conceitos agora, pois eles ficarão mais claros mais tarde. Nesta fase, é importante apenas obter a ideia geral.
Digamos que tenhamos o código -fonte escrito e agora queremos que um compilador o processe e nos dê o binário executável. O fluxo de trabalho desse processo é ilustrado à sua direita.
Observe que isso é aplicável apenas a C, que é uma linguagem compilada, em oposição aos idiomas interpretados (Perl, Python, Shell), e nos referiremos estritamente ao GCC e aos amigos para o resto do nosso guia. Como a figura à sua direita ilustra o pré -processador (CPP) leva seu código -fonte, procura Instruções de pré -processador (Em C, eles começam com um hash) e se tudo parecer certo, o resultado é uma saída compreensível pelo compilador. O compilador (GCC) faz todo o trabalho duro, incluindo otimização de código para o hardware subjacente (se você estiver interessado na teoria do compilador ou na compilação cruzada, há muitos bons livros sobre o assunto, mas assumimos um nível mais iniciante aqui). O resultado é o código de montagem, intimamente próximo da máquina, a partir do qual os binários serão gerados (como é a ferramenta). No final, dependendo das opções e do código, "LD" vinculará o executável a todas as bibliotecas necessárias e pronto! O resultado final: seu programa. Se você quiser ver todos os arquivos intermediários resultantes, GCC Flag -Save -Temps, como ajudará você a fazê -lo. Recomendamos que você leia a página manual do GCC, pelo menos frugalmente, e certifique -se de que seu compilador nos está atualizado. Você vai se acostumar com as bandeiras do GCC usuais lendo nossos exemplos, mas espera -se que você saiba o que eles fazem, não apenas copiar e colar comandos que você vê na tela.
Exemplo C Program
Todo tutorial de programação que se preze. Este programa não faz nada além de imprimir “Olá, mundo!”Na tela, depois sai. É usado para ilustrar a estrutura básica de um programa e alguns conceitos essenciais. Então, sem mais delongas, aqui está.
#incluir / * Este é um comentário */ int main () printf ("Olá, mundo!\ n "); retornar 0;
Agora, vamos dissecar o programa linha por linha e ver o que cada linha representa. O primeiro é uma diretiva pré -processadora (veja acima) que pede o stdio.h arquivo, que fornece a definição para o printf função. Os arquivos de cabeçalho são arquivos que geralmente contêm várias definições (funções, variáveis ...) e fazem .C arquivos menos confusos. Tudo o que um arquivo de origem (.c) Vestirá é um #incluir declaração e possivelmente um argumento para o vinculador. Tudo o que é definido no arquivo de cabeçalho incluído estará disponível no seu código -fonte.
principal() é uma função obrigatória em cada programa C. Como o nome afirma, o principal A atividade acontecerá aqui, independentemente de quantas funções você definiu. int main () significa que essa função não tem argumentos (os parênteses vazios) e que retorna um número inteiro (o inicial int). Tudo isso será discutido mais tarde. A coisa mais importante aqui é o printf função, que leva nosso texto como um argumento e exibe isso. ““\ n"Significa" newline "e é o equivalente a usar a tecla Enter (ou ^m). É chamado de sequência de fuga e todas as sequências de fuga em C começam com "\". Por exemplo, para entender melhor o que é uma sequência de fuga, imagine que você está escrevendo código HTML e precisa imprimir um “<” character. HTML's syntax uses angle brackets to define HTML tags, so chances are your bracket will be interpreted as HTML code instead of being displayed. So, what to do? We escape it with “<” and it will appear properly. Just the same, if you want to insert a newline character, you can't type it directly, as the compiler could care less if you write your program on a single line or not and therefore you you need to escape your new line character with “\ n““.
retornar 0 diz ao compilador que está tudo bem e a execução de principal() A função termina aí. Isso ocorre porque 0 é o código para execução bem -sucedida, enquanto valores maiores que 0 (números inteiros) são uma indicação de que algo deu errado. Os aparelhos encaracolados que começam e terminam a função principal delimitam seu bloco de execução, ou seja, o que acontece em principal(), permanece em principal(). Você deve ter notado os semicolons no final das declarações: eles são obrigatórios como um sinal de que a declaração atual terminou lá, mas não deve ser usada nas diretivas pré -processador como como #incluir.
Compilação
A compilação será discutida em mais detalhes nas próximas partes deste guia. Mas para a completude aqui é um exemplo simples de linha de comando sobre como compilar e executar nosso primeiro programa ""Hello World"" C:
$ gcc -o hello hello.C $ ./Olá, olá, mundo!
Conclusão
Esperamos que não tenhamos amontoado muita informação em seu cérebro e que você goste de ficar conosco neste tutorial de programação. A parte 2 estará lidando com uma comparação entre C e outras linguagens de programação para ajudar aqueles que já têm alguma experiência em desenvolvimento.
Aqui está o que você pode esperar a seguir:
- EU. C Desenvolvimento no Linux - Introdução
- Ii. Comparação entre C e outras linguagens de programação
- Iii. Tipos, operadores, variáveis
- 4. Controle de fluxo
- V. Funções
- Vi. Ponteiros e matrizes
- Vii. Estruturas
- Viii. E/S básico
- Ix. Estilo de codificação e recomendações
- X. Construindo um programa
- XI. Embalagem para Debian e Fedora
- Xii. Obtendo um pacote nos repositórios oficiais do Debian
Tutoriais do Linux relacionados:
- Coisas para instalar no Ubuntu 20.04
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…
- Uma introdução à automação, ferramentas e técnicas do Linux
- Instale Arch Linux na estação de trabalho VMware
- Coisas para instalar no Ubuntu 22.04
- Download do Linux
- Comandos básicos do Linux
- Comandos Linux: os 20 comandos mais importantes que você precisa para…
- Ubuntu 20.04 Guia