Как увидеть постоянные значения в файлах .a lib?

В конце первого tar tvf лента остается на последнем блоке первого файла. Второй tar tvf читает это снова и жалуется, но при этом лента остается в первом блоке второго файла, поэтому третий tar tvf работает.

При работе с несколькими файлами на ленте следует использовать mt для перемещения между файлами перед запуском tar:

mt -f /dev/st0 rewind
tar tvf /dev/nst0
mt -f /dev/nst0 fsf 1
tar tvf /dev/nst0
0
18.05.2017, 01:54
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
8
28.01.2020, 02:13

Теги

Похожие вопросы