Você está na página 1de 7

Tutorial: Programando C no Linux

Alunos: Henrique Neto e Joo Gonalves

E-mails: henrique.brandao@larces.uece.br ;
joao.goncalves@larces.uece.br
Esse Tutorial tem como objetivo mostrar como realizar a compilao de um programa em C
via linha de comando no Ubuntu e alm disso, mostrar como pode ser feita a sua prpria biblioteca.
Quando realizamos esses procedimentos via linha de comando, podemos acompanhar como as
coisas funcionam por baixo, sendo assim, interessante se familiarizar com os comandos no Console.

Para comear, vamos abrir o console. No Ubuntu ele pode ser aberto pressionando Alt+F2 e
dentro 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 para
programar.

Precisamos saber alguns comandos bsicos para utilizar o console, um deles o ls. Ele ir
listar todos os arquivos e pastas do diretrio atual em que voc est. Assim que voc abre o console,
ele iniciado na pasta home. Digitando ls e depois enter, a sada ser semelhate a essa:

Agora iremos criar uma pasta onde ser colocado os cdigos do seu programa. O comando
para criar pastas o mkdir. Digitando ento mkdir nome_da_pasta e dando um novo ls, aparecer
a nova pasta criada:

Outro comando importante o cd, que permite acessar diretrios. Agora entre na pasta
codes que acabou de ser criada, utilizando o comcando cd conforme a figura abaixo.
Pode ser percebido que agora o diretrio 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, depois
digite gedit. Ento escreva o clssico hello world.

Salve o arquivo na pasta codes e volte ao console para fazer a compilao. O compilador
que ser utilizado o gcc que j vem pr-instalado no Ubuntu. A seguinte linha abaixo compila um
programa bsico em C:

gcc -o nome_do_executvel nome_do_arquivo.c

O nome_do_executvel o nome do arquivo do programa que gerado aps a compilao.


Para executar o programa, simplesmente faa ./nome_do_executvel, conforme mostra a Figura
abaixo:
A flag -o indica que todos os cdigos sero linkados e assim gerado diretamente o
executvel especificado. Mas quando queremos criar uma biblioteca, ser preciso o cdigo objeto, e
em C a extenso arquivo.o. Ele basicamente o cdigo j compilado, mas que ainda no foi
linkado com as demais bibliotecas que so necessrias para execuo do programa. Para entender
apague o executvel gerado hello utilizando o comando rm, e em seguida compile o programa
utilizando 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 o
programa final, uma vez que ele j esta compilado.

Criando Uma Biblioteca


Vamos criar uma biblioteca bsica, em que a funes que sero criadas sero soma e
subtrao. Ela ficar em um arquivo externo que chamaremos libcalc.c. Ser necessrio antes criar
o arquivo de cabealho que o libcalc.h, onde iro ficar as definies das funes da sua biblioteca.
Ele importante pois, no arquivo da main.c, ser dado o include da libcalc.h, de maneira
semelhante as das bibliotecas padres do C, como a stdlib.h. Ento abra o gedit e escreva o arquivo
libcalc.h conforme a Figura abaixo e salve na pasta codes.
Nele contm as especificaes (assinaturas) das funes da biblioteca que so
implementadas no arquivo libcalc.c, conforme mostrado na Figura abaixo:

Note que foi necessrio incluir o arquivo libcalc.h com as especificaes das funes.
Agora vamos reescrever a main para utilizar as funes implementadas.
Para fazer a linkagem, primeiramente, utilizamos a flag -c na qual compilar tanto a main
como a libcalc, assim gerando os arquivos main.o e libcalc.o. Depois disso, devemos fazer a
linkagem de todos os arquivos .o para gerar nosso programa final, conforme mostrado na Figura
abaixo.

Criao de Bibliotecas Dinmicas

Bibliotecas dinmicas permitem a utilizao de funcionalidades ou procedimentos externos


ao seu programa. A ideia que bibliotecas assim fiquem instadas no computador sem ter a
necessidade de inclu-las nos diretrios do programa que voc est implementando.
Em sistemas operacionais como o Linux, bibliotecas dinmicas seguem o seguinte padro
de nomenclatura: lib<nome_biblioteca>.so.<verso>. O <nome_biblioteca> passado para o
compilador gcc na hora da linkagem com o seu programa. A <verso> indica o nmero da verso da
sua biblioteca, podendo ser opcional. E so significa shared object. Essas bibliotecas devem estar em
diretrios do sistema como /lib ou /usr/lib, alm disso o arquivo .h deve ser copiado para a pasta
/usr/include.
Para tornar a biblioteca libcalc, implementada nos tpicos anteriores, em uma biblioteca
dinmica, necessrio os seguintes passos:

- Alterar a forma de compilao dos arquivos libcalc.c e libcalc.h utilizando o gcc. Para isso,
utiliza-se os parmetros -shared, -fPIC e -o. A linha de compilao mostrada na figura abaixo.

- Copiar o arquivo compilado libcalc.so para o diretrio /usr/lib. Para realizar essa cpia,
voc utiliza o comando cp. Nele voc especifica o arquivo que quer copiar e o diretrio destino.
Tambm necessrio ter privilgios de super-usurio (root), assim tem que se usar o comando
sudo, e informar sua senha de usurio quando for pedido. A Figura abaixo ilustra esses passos.

- Copiar o arquivo libcalc.h para a pasta /usr/include, tambm utilizando o comando sudo. A
Figura abaixo ilustra esses passos.

Feito os procedimentos acima, agora pode-se utilizar a biblioteca em seu programa. Mas
antes, no arquivo main.c troque #include libcalc.h por #include <libcalc.h>. As aspas indicam
que o arquivo libcalc.h esta no diretrio atual. Utilizando <>, est sendo indicado que libcalc.h esta
no diretrio do sistema, ento no necessrio passar um caminho para ele. A linha de comando
mostrada na Figura abaixo mostra como compil-lo linkando-se tal biblioteca (como o arquivo main
foi alterado deve-se novamente fazer sua compilao).

Como pode ser visto, para compilar necessrio passar a flag -l, juntamente com o nome da
lib. Dessa forma, voc pode criar sua prpria lib e apenas disponibilizar o arquivo .so e o arquivo .h.
Assim outras pessoas podero usar a sua lib, mesmo no tendo o cdigo fonte .c.

Você também pode gostar