Como ver valores constantes em arquivos .a lib?

0

Eu declarei uma constante usando a declaração define no meu arquivo C.

#define COMPRESSION_VERSION 1.0.0

Agora criei a biblioteca libcompression.a , que inclui o arquivo C acima. Agora preciso verificar meu valor constante definido na biblioteca usando o terminal.

    
por Jeeva 16.05.2017 / 12:32

1 resposta

8
#define COMPRESSION_VERSION 1.0.0

é uma diretiva de pré-processador C, que não deve sobreviver à expansão macro, e muito menos à compilação.

Se você quiser um símbolo que apareça na sua biblioteca, você precisa adicioná-lo explicitamente; por exemplo

static const char * COMPRESSION_VERSION = "1.0.0";

Isso aparecerá na sua biblioteca:

$ nm -A libcompression.a
libcompression.a:compression.o:0000000000000000 d COMPRESSION_VERSION

e você pode ver seu valor usando objdump -s .

Uma técnica comum é incorporar a versão no símbolo; por exemplo, para OpenSSL:

$ nm -D /usr/lib/x86_64-linux-gnu/libssl.so.1.1|grep OPENSSL_1
0000000000000000 A OPENSSL_1_1_0
0000000000000000 A OPENSSL_1_1_0d
    
por 16.05.2017 / 13:17