Я создаю общий объектный файл из группы исходных файлов C ++ с помощью GCC. Во всех примерах руководств по созданию файлов .so
показан файл, созданный с номером версии после суффикса .so
. Например:
gcc -shared -Wl,-soname,libmean.so.1 -o libmean.so.1.0.1 calc_mean.o
Это приведет к созданию файла .so
libmean.so.1.0.1
Кроме того, если я просматриваю каталог / usr / lib
на моем локальном компьютере, я вижу, что многие из файлов .so
имеют номера версий в конце.
Однако, когда я компилирую общий объектный файл и поместите его в / usr / lib
, компоновщик не сможет его найти, если я поставлю номер версии в конце. Если я удалю номер версии, все будет нормально. Меня действительно не волнует, указывать номер версии или нет, я просто не понимаю, почему это кажется обычным соглашением, и все же это приводит к тому, что общая библиотека не работает с компоновщиком. Итак, что здесь происходит? Почему существует соглашение о размещении номера версии в конце . итак
имя файла?