Я пытаюсь понять статические библиотеки и общие объекты в C. Я пытаюсь понять, может ли один тип библиотеки зависеть от другого типа.
Рассмотрим сценарий:
libA.также есть функция foo_A_dyn ():
libA.so ---> foo_A_dyn ()
foo_A_dyn () использует функцию foo_B_static (), которая определена в libB.a и является статическойбиблиотека.
libB.a ---> foo_B_static ()
Мои библиотеки построены следующим образом:
gcc -c foo_B.c -o foo_B.o
ar -cvq libB.a foo_B.o
gcc -fPIC -c foo_A.c -o foo_A.o
gcc -shared libA.so foo_A.o -I.
gcc main.c -lA -lB -L. -I. -o EXE
Примечание: main.c выполняет вызовв foo_A_dyn () и НЕ вызывает foo_B_static () напрямую.
И теперь, когда я пытаюсь создать свой исполняемый EXE-файл, я получаю сообщение об ошибке «неопределенная ссылка на foo_B_static».
Iдумаю, что ошибка кажется подлинной, но я не могу расшифровать обоснование этого и изложить ее словами.
Может кто-нибудь помочь?