Reverse pkg-config?

3

Suponha que usando o pkg-config eu possa encontrar quais flags de link são necessários adicionar uma biblioteca ao meu código, suponha que se eu precisar de bibliotecas do cairo para adicionar, eu posso encontrar o flag -l apropriado por

> pkg-config --libs cairo
> -lcairo

Como faço para encontrar o reverso (ou seja, link flags - > library name)? Suponha que eu queira saber qual biblioteca será adicionada chamando -lm flag, como faço isso?

    
por ramgorur 31.03.2014 / 06:09

1 resposta

1

Suppose I want to know which library will be added by invoking -lm flag, how do I do that?

A parte depois do -l é o nome da biblioteca. Seu binário é prefixado com lib , então você pode encontrá-los com esse nome;

> whereis libm
libm: /usr/lib64/libm.a /usr/lib64/libm.so

> whereis libcairo
libcairo: /usr/lib64/libcairo.so

Etc.

Se whereis não disser nada, você também pode tentar usar a saída de ldconfig -p (consulte man ldconfig ):

> ldconfig -p | grep "libm.so"
    libm.so.6 (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libm.so.6
    libm.so.6 (libc6, OS ABI: Linux 2.6.32) => /lib/libm.so.6
    libm.so (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libm.so

Observe que neste caso eu adicionei "libm" com ".so", o que não é necessário, mas salva a correspondência com "libmfoo ...", "libmbar ...", etc. Desde -l refere-se a vincular bibliotecas de objetos compartilhados ( .so ), isso deve ser bastante infalível.

    
por 31.03.2014 / 08:08

Tags