Я действительно запутался здесь, вот что я думаю, это упрощенная модель моей ситуации:
libMyLibrary2.a
имеет ссылки на libMyLibrary1.a
. Если я свяжу так:
gcc -shared dummy.cpp.o -o libOutput.so -L/path/to/libs -lMyLibrary1 -lMyLibrary2
Я получаю целую кучу undefined reference to
ошибок. Но если я свяжу так:
gcc -shared dummy.cpp.o -o libOutput.so -L/path/to/libs -lMyLibrary1 /path/to/libs/libMyLibrary2.a
Все в порядке. Это нормально? Или это должно иметь какое-то отношение к моим конкретным настройкам? На самом деле у меня есть множество библиотек вместо MyLibrary1 и MyLibrary2, а также много флагов. Или дело в том, что я упускаю что-то еще, может быть, какое-то ключевое различие между командами? Я могу опубликовать точные команды, которые работают и не работают, если это необходимо.