Você pode obter informações de um arquivo ELF (executável ou biblioteca) com readelf
.
Parece que você está procurando os símbolos exportados, então use:
$ readelf --dyn-syms libyourthing.so
Para funções do tipo C, você só obterá nomes de funções, não tipos de argumentos ou valores de retorno. Para funções C ++, você obterá nomes desconfigurados - canalize a saída desse comando por meio de c++filt
para obter nomes de funções e tipos de argumentos (ainda sem valores de retorno).
(Globais também são exibidos na saída, com seus nomes e tamanho, mas não seu tipo.)
Outras ferramentas úteis são nm
e objdump
, que fornecem informações semelhantes.
Eu não tenho certeza se isso vai ajudar você. Você também deve tentar strace
para ver se o python está olhando onde você pensa que está. Algo como:
$ strace -e trace=open python your_code_that_loads_your_lib.py
mostrará todas as open
chamadas executadas pelo python - procure o nome da sua biblioteca lá (haverá um lote logado pelo acima, filtre-o). Cada chamada também mostra o código de retorno, então você pode ter uma ideia melhor sobre o que está acontecendo.
Ah, e certifique-se de que você não está tentando carregar uma biblioteca de 32 bits em um tempo de execução de python de 64 bits, ou vice-versa.