Вы спрашиваете "какой объектный файл в общей библиотеке вызывает ошибку".
Проблема в том, что к тому времени, когда разделяемая библиотека была связана, все объектные файлы были "слиты воедино" и больше не существуют внутри разделяемой библиотеки как отдельные сущности, поэтому ваш вопрос несколько бессмыслен.
Тем не менее, если вы выполните отладочную сборку (с флагом -g
), компоновщик сообщит вам, какой файл и строка source вызывают проблему, которую вы затем сможете перевести в объектный файл.
Если вы не можете (например, потому что символ проблемы указан в заголовочном файле), вы можете обратиться за помощью к компоновщику: заново пересобрать библиотеку, передав компоновщик -y
флаг:
g++ -fPIC -shared ${OBJECTS} -o foo.so -Wl,-y,my_unresolved_symbol
сообщит вам, на какой объект (ы) ссылается my_unresolved_symbol
.
Примечание: компоновщик работает «ниже» C ++, поэтому вы должны передать искаженное имя, например, _Znw
к нему.