Não há uma maneira geral de saber qual biblioteca é necessária para usar uma função específica. Você precisa examinar a documentação dessa biblioteca. Um tutorial bem escrito ou uma referência de API deve informar, esse é o seu trabalho.
Você pode pelo menos ter uma idéia de qual biblioteca pacote é necessária: é o mesmo pacote de biblioteca que contém o arquivo de cabeçalho. Como determinar qual pacote contém o arquivo de cabeçalho depende da distribuição, por exemplo dpkg -S /usr/include/glib-2.0/glib.h
no Debian / Ubuntu / Mint /…, rpm -qf /usr/include/glib-2.0/glib.h
no RHEL / CentOS / Fedora /…, etc. Depois de conhecer o pacote da biblioteca, listar seu conteúdo para encontrar o que contém .so
arquivos, por exemplo,
dpkg -L libglib2.0-dev | grep '\.so$'
rpm -qlf /usr/include/glib-2.0/glib.h | grep '\.so$'
Com o Glib, existem vários arquivos .so
, e não há nenhuma maneira automática de dizer quais são necessários para uma função específica (pode haver mais de um).
Se a biblioteca usar pkg-config
, você deverá usá-la em vez de codificar o cabeçalho e os caminhos da biblioteca. Nem todas as bibliotecas o usam no entanto. Você pode dizer normalmente porque o pacote da biblioteca da sua distribuição deve depender do pacote pkg-config
(por exemplo, dpkg -s libglib2.0-dev |grep '^Depends:.*pkg-config'
).
Se a documentação estiver muito ruim, tente listar os símbolos definidos pela biblioteca:
nm -D /usr/lib/x86_64-linux-gnu/libgio-2.0.so |awk '$2=="T" {print $3}'
Esta não é uma maneira segura, porque não lhe dirá se outra biblioteca também é necessária.