tutorial programando c no linux

7
Tutorial: Programando C no Linux Alunos: Henrique Neto e João Gonçalves E-mails: [email protected] ; [email protected]

Upload: joao-goncalves

Post on 26-Jul-2015

94 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Tutorial Programando C no Linux

Tutorial: Programando C no Linux

Alunos: Henrique Neto e João Gonçalves

E-mails: [email protected] ;[email protected]

Page 2: Tutorial Programando C no Linux

Esse Tutorial tem como objetivo mostrar como realizar a compilação de um programa em Cvia linha de comando no Ubuntu e além disso, mostrar como pode ser feita a sua própria biblioteca.Quando realizamos esses procedimentos via linha de comando, podemos acompanhar como ascoisas funcionam por baixo, sendo assim, interessante se familiarizar com os comandos no Console.

Para começar, vamos abrir o console. No Ubuntu ele pode ser aberto pressionando Alt+F2 edentro da caixa dando o comando gnome-terminal. Na Figura abaixo pode ser visto o console, ele ésemelhante ao prompt-comando do windows. Essa é a linha de comando que será utilizada paraprogramar.

Precisamos saber alguns comandos básicos para utilizar o console, um deles é o ls. Ele irálistar todos os arquivos e pastas do diretório atual em que você está. Assim que você abre o console,ele é iniciado na pasta home. Digitando ls e depois enter, a saída será semelhate a essa:

Agora iremos criar uma pasta onde será colocado os códigos do seu programa. O comandopara criar pastas é o mkdir. Digitando então mkdir nome_da_pasta e dando um novo ls, apareceráa nova pasta criada:

Outro comando importante é o cd, que permite acessar diretórios. Agora entre na pastacodes que acabou de ser criada, utilizando o comcando cd conforme a figura abaixo.

Page 3: Tutorial Programando C no Linux

Pode ser percebido que agora o diretório atual é codes.

Compilando um Hello World

Para a escrita do programa, pode ser utilizado alguns editores de texto. Como exemplo, tem-se o gedit, que é semelhante ao bloco de notas do windows. Para abrir, execute Alt+F2, depoisdigite gedit. Então escreva o clássico hello world.

Salve o arquivo na pasta codes e volte ao console para fazer a compilação. O compiladorque será utilizado é o gcc que já vem pré-instalado no Ubuntu. A seguinte linha abaixo compila umprograma básico em C:

gcc -o nome_do_executável nome_do_arquivo.c

O nome_do_executável é o nome do arquivo do programa que é gerado após a compilação.Para executar o programa, simplesmente faça “./nome_do_executável”, conforme mostra a Figuraabaixo:

Page 4: Tutorial Programando C no Linux

A flag -o indica que todos os códigos serão linkados e assim gerado diretamente oexecutável especificado. Mas quando queremos criar uma biblioteca, será preciso o código objeto, eem C a extensão é arquivo.o. Ele é basicamente o código já compilado, mas que ainda não foilinkado com as demais bibliotecas que são necessárias para execução do programa. Para entenderapague o executável gerado hello utilizando o comando rm, e em seguida compile o programautilizando a flag -c, dessa forma será gerado o main.o conforme a Figura abaixo:

O último comando com o gcc listado, apenas fez a linkagem da main.o para gerar oprograma final, uma vez que ele já esta compilado.

Criando Uma Biblioteca

Vamos criar uma biblioteca básica, em que a funções que serão criadas serão soma esubtração. Ela ficará em um arquivo externo que chamaremos libcalc.c. Será necessário antes criaro arquivo de cabeçalho que é o libcalc.h, onde irão ficar as definições das funções da sua biblioteca.Ele é importante pois, no arquivo da main.c, será dado o include da libcalc.h, de maneirasemelhante as das bibliotecas padrões do C, como a stdlib.h. Então abra o gedit e escreva o arquivolibcalc.h conforme a Figura abaixo e salve na pasta codes.

Page 5: Tutorial Programando C no Linux

Nele contém as especificações (assinaturas) das funções da biblioteca que são

implementadas no arquivo libcalc.c, conforme mostrado na Figura abaixo:

Note que foi necessário incluir o arquivo “libcalc.h” com as especificações das funções.Agora vamos reescrever a main para utilizar as funções implementadas.

Page 6: Tutorial Programando C no Linux

Para fazer a linkagem, primeiramente, utilizamos a flag -c na qual compilará tanto a maincomo a libcalc, assim gerando os arquivos main.o e libcalc.o. Depois disso, devemos fazer alinkagem de todos os arquivos .o para gerar nosso programa final, conforme mostrado na Figuraabaixo.

Criação de Bibliotecas Dinâmicas

Bibliotecas dinâmicas permitem a utilização de funcionalidades ou procedimentos externosao seu programa. A ideia é que bibliotecas assim fiquem instadas no computador sem ter anecessidade de incluí-las nos diretórios do programa que você está implementando.

Em sistemas operacionais como o Linux, bibliotecas dinâmicas seguem o seguinte padrãode nomenclatura: lib<nome_biblioteca>.so.<versão>. O <nome_biblioteca> é passado para ocompilador gcc na hora da linkagem com o seu programa. A <versão> indica o número da versão dasua biblioteca, podendo ser opcional. E so significa shared object. Essas bibliotecas devem estar emdiretórios do sistema como /lib ou /usr/lib, além disso o arquivo .h deve ser copiado para a pasta/usr/include.

Page 7: Tutorial Programando C no Linux

Para tornar a biblioteca libcalc, implementada nos tópicos anteriores, em uma bibliotecadinâmica, é necessário os seguintes passos:

- Alterar a forma de compilação dos arquivos libcalc.c e libcalc.h utilizando o gcc. Para isso,utiliza-se os parâmetros -shared, -fPIC e -o. A linha de compilação é mostrada na figura abaixo.

- Copiar o arquivo compilado libcalc.so para o diretório /usr/lib. Para realizar essa cópia,você utiliza o comando cp. Nele você especifica o arquivo que quer copiar e o diretório destino.Também é necessário ter privilégios de super-usuário (root), assim tem que se usar o comandosudo, e informar sua senha de usuário quando for pedido. A Figura abaixo ilustra esses passos.

- Copiar o arquivo libcalc.h para a pasta /usr/include, também utilizando o comando sudo. AFigura abaixo ilustra esses passos.

Feito os procedimentos acima, agora pode-se utilizar a biblioteca em seu programa. Masantes, no arquivo main.c troque #include “libcalc.h” por #include <libcalc.h>. As aspas indicamque o arquivo libcalc.h esta no diretório atual. Utilizando <>, está sendo indicado que libcalc.h estano diretório do sistema, então não é necessário passar um caminho para ele. A linha de comandomostrada na Figura abaixo mostra como compilá-lo linkando-se tal biblioteca (como o arquivo mainfoi alterado deve-se novamente fazer sua compilação).

Como pode ser visto, para compilar é necessário passar a flag -l, juntamente com o nome da lib. Dessa forma, você pode criar sua própria lib e apenas disponibilizar o arquivo .so e o arquivo .h.Assim outras pessoas poderão usar a sua lib, mesmo não tendo o código fonte .c.