Bibliotecas para C
Existe uma grande quantidade de bibliotecas disponíveis para a linguagem C, algumas delas mais genéricas e muitas outras construídas para áreas específicas, como o processamento de imagens, serviços de rede, etc.
Esta página visa apresentar algumas bibliotecas para C que podem ser úteis para o desenvolvimento de programas mais complexos.
Uso geral
LibC
A biblioteca padrão C (C Standard Library) ou simplesmente LibC contém a maioria das funções básicas da linguagem C como printf
, scanf
, fopen
e muitas outras.
A LibC oferece funções para:
- interface com o sistema operacional
- alocação de memória (
malloc
, …) - acesso a arquivos (
fopen
, …) - acesso a streams (
printf
,scanf
,getchar
, …)
- manipulação de caracteres e strings (normais ou multi-bytes)
- ordenação e busca (
qsort
,bsearch
) - operações matemáticas (exponenciação, raiz, trigonometria, logaritmos)
- conversões numéricas
- geração de números aleatórios
- operações com números complexos
- manipulação de datas e horas
- …
Uma extensão da biblioteca padrão C específica para sistemas operacionais no padrão POSIX for definido como POSIX C Library. Além das funções da LibC padrão, ela também implementa operações específicas de sistema operacional, como:
- operações de rede
- tratamento de sinais e eventos do SO
- operações de entrada/saída assíncronas
- filas de mensagens
- semáforos
- threads
- …
Como o próprio nome diz, a biblioteca padrão está disponível por default na grande maioria dos sistemas operacionais que suportam a linguagem C. Sistemas UNIX como o Linux e o FreeBSD usam geralmente a implementação da LibC construída pelo projeto GNU, chamada GNU C Library, ou simplesmente GLibC.
A GLibC implementa as funcionalidades da LibC padrão e da extensão POSIX, mas traz também um grande conjunto de extensões que não estão disponíveis em outras implementações. Por isso, ao desenvolver programas que devem funcionar em mais de uma plataforma, deve-se verificar se as funções utilizadas são suportadas em todas elas.
Estruturas de dados
GLib
A GLib é uma biblioteca de uso geral com um grande conjunto de funcionalidades para a construção de estruturas de dados (listas, árvores, tabelas hash, etc.). A biblioteca GLib é muito usada para a construção de aplicações em Linux, sobretudo no ambiente gráfico Gnome. Todavia, pode ser compilada e usada em outras plataformas, pois não tem relação com a interface gráfica.
Páginas com mais informações sobre a GLib:
SGLib
Outra opção para a construção de estrutura de dados usuais, como listas e árvores, é a biblioteca SGLib - A Simple Generic Library for C.
Interface gráfica
SDL
A biblioteca SDL (Simple DirectMedia Layer) oferece acesso à interface gráfica do computador. Estas funcionalidades são oferecidas:
- abertura de janelas
- operações de desenho (linhas, áreas, etc)
- operações de áudio
- leitura de posição e eventos do mouse
- leitura do teclado
- Uso de fontes de caracteres
Esta biblioteca está disponível para C e C++ em várias plataformas, como Linux, Windows, Android e iOS. Mais informações sobre SDL podem ser obtidas em:
Allegro
A biblioteca Allegro permite a manipulação de gráficos simples e áudio, sendo bem adaptada para a construção de jogos 2D. É uma biblioteca mais simples (mais limitada) que SDL, mas boa para projetos menores.
Algumas de suas características:
- multiplataforma: Linux, Windows, MacOS, Android, iOS
- pode ser usada em C e outras linguagens
- usa aceleração gráfica (através de OpenGL ou DirectX)
- manipulação de áudio e vídeo
Interface de usuário
NCurses
A biblioteca NCurses permite a manipulação do terminal de texto, oferecendo as seguintes funcionalidades:
- posicionamento do cursor
- leitura não-bloqueante do teclado
- leitura de teclas especiais (setas, teclas de função)
- manipulação de cores
- criação de janelas, menus e forms em modo texto
- leitura de eventos do mouse
Estas páginas oferecem informações adicionais sobre a biblioteca NCurses:
- Exemplos do ncurses no Linux, em
/usr/lib/ncurses/examples/
(instalar o pacotencurses-examples
) - Código-fonte do pacote
ncurses-examples
disponível no Debian e derivados (Ubuntu, Mint, etc).
GTK
A biblioteca GIMP ToolKit foi desenvolvida para o ambiente de desktop Gnome (Linux). Ela permite a construção de janelas gráficas com elementos de interface do usuário (janelas, menus, botões, etc).
- Tutorial GTK: https://developer.gnome.org/gtk-tutorial/stable
- Construtor de interfaces: https://glade.gnome.org
Armazenamento
GDBM
A biblioteca GDBM (GNU dbm) permite criar bases de dados simples em disco, estruturadas na forma de pares chave/valor. São oferecidas funções para criar/destruir bases e criar/remover/buscar registros em uma base.
A estrutura interna da base permite operações de busca/inserção muito rápidas.
SQLite
Quando um programa precisa armazenar e manipular um grande volume de dados estruturados, pode fazer uso da biblioteca SQLite. Esta biblioteca constrói a abstração de uma base de dados relacional no padrão SQL em um arquivo em disco. A maioria das operações típicas de DBMS relacionais, como criação de tabelas, buscas, fusões, etc são suportadas pela biblioteca.
SQLite é a biblioteca usada para armazenamento de dados do usuário no ambiente Android e nos navegadores web Firefox e Chrome.
Ciência
GSL
A biblioteca GSL (GNU Scientific Library) oferece mais de 1000 funções para operações matemáticas de alto desempenho, como:
- números complexos
- raízes de polinômios
- álgebra linear
- equações diferenciais
- transformadas
- estatística
- integração (Monte Carlo, etc)
- otimização (mínimos quadrados, etc)
OpenCV
A biblioteca OpenCV (Open Computer Vision) foi desenvolvida pela Intel para o processamento de imagens e vídeos, trazendo uma grande quantidade de funções com desempenho otimizado para o tratamento de fotografias, vídeos capturados por câmeras, etc.