如何查看 .a lib 文件中的常量值?

如何查看 .a lib 文件中的常量值?

我在 C 文件中使用 Define 语句声明了一个常量。

#define COMPRESSION_VERSION 1.0.0

现在我已经创建了libcompression.a包含上述 C 文件的库。现在我需要使用终端检查库中定义的常量值。

答案1

#define COMPRESSION_VERSION 1.0.0

是一个 C 预处理器指令,预计它不会在宏扩展中幸存下来,更不用说编译了。

如果您希望某个符号出现在您的库中,则需要显式添加它;例如

static const char * COMPRESSION_VERSION = "1.0.0";

然后这将出现在您的库中:

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

你可以使用 看到它的价值objdump -s

一种常见的技术是将版本嵌入到符号中;例如对于 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

相关内容