Видимость символов, статическая, динамическая линковка
Материал из test
Посмотреть таблицу символов (используется при линковке, во время сборки):
objdump -t
Посмотреть динамическую таблицу символов (используется в рантайме динамическим линкером):
objdump -T
Объектные файлы (relocatable). Статические библиотеки
int reloc_global_without(int b) {
return b + 1;
}
static int reloc_static_without(int b) {
return b + 2;
}
int __attribute__((visibility ("hidden"))) reloc_global_hidden(int b) {
return reloc_static_without(b) + 3;
}
int __attribute__((visibility ("default"))) reloc_global_default(int b) {
return b + 4;
}
разобрать:
clang reloc.c -c objcopy --globalize-symbol=reloc_static_without reloc.o objcopy --localize-symbol=reloc_static_without reloc.o clang reloc.c -c -fvisibility=hidden clang reloc.o main.c -o main meson and CMake: CMake default without hidden flag meson default without hidden flag meson setup build_meson meson compile -C build_meson --verbose cmake link.txt compile_commands.json meson compile_commands.json