Одна из моих общих библиотек my.so использует символ на основе версии в качестве символа @@ test_1.2.3 из библиотеки test.so. Когда я связываю разделяемую библиотеку my.so с моим исполняемым файлом, она говорит: «символ без ссылки @@ test_1.2.3». Это происходит, когда линия связи выглядит следующим образом -
g++ -o myexecutable myexecutable.o -L/path-to-my.so -lmy -L/path-to-test.so -ltest
Если я поменяю ссылку на -
g++ -o myexecutable myexecutable.o -L/path-to-my.so -lmy /path-to-test.so/libtest.so
это работает.
Почему libtest.so
не выбирается при указании с помощью -L
, а при задании в качестве полного пути?