Jee*_*eva 1 linux command-line shell libraries
我在我的 C 文件中使用定义语句声明了一个常量。
#define COMPRESSION_VERSION 1.0.0
Run Code Online (Sandbox Code Playgroud)
现在我已经创建了libcompression.a
包含上述 C 文件的库。现在我需要使用终端检查库中定义的常量值。
#define COMPRESSION_VERSION 1.0.0
Run Code Online (Sandbox Code Playgroud)
是一个 C 预处理器指令,预计它不会在宏扩展中幸存下来,更不用说编译了。
如果你想要一个符号出现在你的库中,你需要明确地添加它;例如
static const char * COMPRESSION_VERSION = "1.0.0";
Run Code Online (Sandbox Code Playgroud)
这将出现在您的库中:
$ nm -A libcompression.a
libcompression.a:compression.o:0000000000000000 d COMPRESSION_VERSION
Run Code Online (Sandbox Code Playgroud)
您可以使用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
Run Code Online (Sandbox Code Playgroud)