Размер, указанный в readelf
, является размером бинарного объекта; для main
это последовательность машинных инструкций, реализующих вашу функцию. В моей системе я вижу
57: 00000000004004d7 21 FUNC GLOBAL DEFAULT 13 main
из readelf
, что хорошо соответствует скомпилированному коду, как показано gcc -S
илиobjdump -d
:
0000000000000000 <main>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: bf 00 00 00 00 mov $0x0,%edi
9: e8 00 00 00 00 callq e <main+0xe>
e: b8 00 00 00 00 mov $0x0,%eax
13: 5d pop %rbp
14: c3 retq
21 байт — это байты 55
, 48
, 89
, e5
и т. д.
Думайте о символической ссылке как о текстовом файле с путем в нем. Он просто копирует текстовый файл. Итак, в вашем примере это будет указывать на/home/user/data
Чтобы ответить на ваш последующий вопрос :да, есть разница между относительной ссылкой и абсолютной ссылкой. Если вы хотите, чтобы ваши ссылки были относительными, вам нужно построить их таким образом. например.
/home/user/myproject/symlink1 ->../data
Будет сохранено так, как вы хотите.
В стороне :Для резервного копирования,вам может понадобиться -a
, что подразумевает -l
. Обычно он выдает ошибки на внешнем флэш-накопителе только потому, что большинство из них отформатированы в файловую систему FAT32 и не поддерживают сохранение всех параметров архива, таких как пользователь и разрешения.